bash shell:如何重命名文件

时间:2011-03-22 02:08:14

标签: linux bash shell

我只想将当前目录和子目录中的所有* .a文件重命名为* .a.b,如何在shell脚本中执行此操作?

4 个答案:

答案 0 :(得分:7)

find . -type f -name '*.a' -print0 | xargs -0 -IZZ mv ZZ ZZ.b

这应该处理带有空格和/或换行符的文件名。它也不重命名目录(另一个解决方案是查找)。如果您希望它不区分大小写,请使用“-iname”而不是“-name”

答案 1 :(得分:2)

红宝石(1.9 +)

$ ruby -e 'Dir["**/*.a"].each{|x|File.file?x && File.rename(x,"#{x}.b")}'

在shell脚本中(至少是Bash 4)

shopt -s globstar
shopt -s nullglob
for file in **/*.a
do
 echo mv "${file}" "${file}.b"
done

答案 2 :(得分:1)

要使用<files>重命名rename 's/\.a$/.a.b/' <files>。递归执行此操作只需要进行一些循环。

(或使用**/**/*/**/*/*/*等文件)

答案 3 :(得分:1)

尝试以下脚本:

for file in `find . -name '*.a'`; do mv $file $file.b; done