ICE*_*ICE 4 command-line bash batch-rename
我想重命名.txt文件夹中的所有文件。这个重命名确实.txt为我重命名:
rename 's/\.txt//g' *.txt -v
Run Code Online (Sandbox Code Playgroud)
但是当我想重命名所有子文件夹时
find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"
Run Code Online (Sandbox Code Playgroud)
它告诉我:
Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...
Run Code Online (Sandbox Code Playgroud)
还find ./ -type -d正确显示我当前和所有子文件夹。
为什么我有No such file or directory消息?
您需要正确使用find的-exec语法,'{}'用于表示找到的文件
find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;
Run Code Online (Sandbox Code Playgroud)
测试-n后删除rename。
(假设您确实想更改目录名称而不是常规文件名 - 如果是这种情况,请使用-type f代替type -d)