我需要 find 命令来重命名每个文件和目录。在我当前的目录中。 例子: 我有文件和目录:
abc.txt
abcd.pdf
xyx.csv
XYS
XYZ
I want to rename it
abc.txt -> old_abc.txt
XYZ -> old_XYZ
我正在使用类似的东西
find . ! -name dbg.txt -exec rename * old_ '{}' \;
我如何将每个文件和目录作为参数传递给 find 命令。
注意:我想避免重命名 dbg.txt 文件 请在这里帮忙!!
最佳答案
如果您有 perl rename
实用程序,那么您可以使用:
find . -type f -not -name 'dbg.txt' -print0 |
xargs -0 -I {} rename -n 's~^(.+/)(.+)~$1old_$2~' '{}'
{请注意,-n
用于试运行。验证此命令的输出后,删除 -n
选项以重命名所有文件。
如果您没有rename
实用程序,则使用:
find . -type f -not -name 'dbg.txt' -print0 |
xargs -0 -p -I {} bash -c 'mv "$1" "${1%/*}/old_${1##*/}"' - '{}'
关于linux - find 命令重命名每个文件和目录。最大深度 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853629/