递归重命名图像/文件?

递归重命名图像/文件?

如何递归重命名图像/文件?例如:

folder
- subfolder1
   - a-copy.jpg
- subfolder2
   - b-copy.jpg
- subfolder3
   - c-copy.jpg

我想要得到:

folder
- subfolder1
   - a-thumb.jpg
- subfolder2
   - b-thumb.jpg
- subfolder3
   - c-thumb.jpg

我试过:

for i in $(find . -iname '*.jpg') ; do rename 's/-copy/-thumb/' *.jpg; done

当然不行!有什么想法吗?

答案1

使用rename,首先检查-n是否进行试运行,如下所示:

rename -n 's/-copy\./-thumb./ if -f' folder/*/*.jpg

...如果对命名输出满意,请删除-n并再次运行它以进行实际重命名。

或者在循环中,首先检查echo包含的内容,如下所示(从包含目录的父目录中运行,或者在下面folder提供/full/path/to/folder/*/*.jpg):

for f in folder/*/*.jpg
  do
    [ -f "$f" ] && echo mv -nv -- "$f" "${f/-copy./-thumb.}"
    done

...如果对命名输出满意,请删除echo并再次运行,如下所示:

for f in folder/*/*.jpg
  do
    [ -f "$f" ] && mv -nv -- "$f" "${f/-copy./-thumb.}"
    done

...进行实际的重命名。

要包含其他文件扩展名(区分大小写),请将它们添加到括号扩展中,如folder/*/*.{jpg,JPG,png,PNG}等。

相关内容