我在 Linux 系统上,我试图将许多子目录中的所有 .jpg 文件重命名为顺序文件名,因此每个子目录中的所有 jpeg 文件都重命名为 0001.jpg、0002.jpg 等。我有一个 '在单个目录中工作的重命名'命令:
rename -n 's/.*/sprintf("%04d",$::iter++ +1).".jpg"/e' *.jpg
我正在尝试这样使用它:
for i in ls -D; do rename -n 's/.*/sprintf("%04d",$::iter++ +1).".jpg"/e' *.jpg; done
但是对于输出我得到这个:
*.jpg renamed as 0001.jpg
对于每个子目录。我做错了什么?
最佳答案
您需要将命令放在反引号中(或使用 $( ... )
bash 语法)以便
迭代它的输出。还可以将 $i
变量与 *.jpg 文件一起使用
名称模式,例如
for i in `ls -D`
do
rename -n 's/.*/sprintf("%04d",$::iter++ +1).".jpg"/e' $i/*.jpg
done
但是,对于这种情况,您想要遍历所有子目录,并且您是 最好使用 find 命令:
for i in `find . -type d`; do rename ...
关于linux - 递归重命名所有子目录中的 .jpg 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22378365/