gpt4 book ai didi

Bash:在每个名称的末尾查找带有尾随空格的目录

转载 作者:行者123 更新时间:2023-12-04 03:03:31 25 4
gpt4 key购买 nike

我是 Linux 的新手(我正在使用 Linux Mint),我需要你的帮助来理解基本的 bash 命令。

我将文件存储在我在不同操作系统中使用的外部硬盘驱动器(NTFS 格式)上。我的文件组织在许多目录(文件夹)中,在每个主目录中我有更多文件夹,在这些文件夹中我有其他文件夹等等。我需要一个 bash 命令来查找每个名称末尾带有尾随空格的所有 目录。如果可能的话,我还想使用 bash 命令来删除空格。我曾尝试查看其他答案,但我只找到了命令,但没有明确解释它们的作用,所以我不确定这是否是我正在寻找的,我不想冒险无意中改变某些东西。非常感谢任何解释要使用哪些命令的帮助!

最佳答案

编写以下内容是为了易于理解(作为次要目标),并在极端情况下纠正(作为主要目标):

# because "find"'s usage is dense, we're defining that command in an array, so each
# ...element of that array can have its usage described.
find_cmd=(
find # run the tool 'find'
. # searching from the current directory
-depth # depth-first traversal so we don't invalidate our own renames
-type d # including only directories in results
-name '*[[:space:]]' # and filtering *those* for ones that end in spaces
-print0 # ...delimiting output with NUL characters
)

shopt -s extglob # turn on extended glob syntax
while IFS= read -r -d '' source_name; do # read NUL-separated values to source_name
dest_name=${source_name%%+([[:space:]])} # trim trailing whitespace from name
mv -- "$source_name" "$dest_name" # rename source_name to dest_name
done < <("${find_cmd[@]}") # w/ input from the find command defined above

另见:

  • BashFAQ #1 ,描述了 while read 循环的一般语法,以及上述特定修改(IFS=read -r 等)的目的。
  • BashFAQ #100 ,描述了如何在 bash 中进行字符串操作(特别是包括 ${var%suffix} 语法,称为“参数扩展”,用于从上面的值中删除后缀)。
  • Using Find ,对 find 的使用及其与 bash 的集成进行了一般性介绍。

关于Bash:在每个名称的末尾查找带有尾随空格的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46721082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com