Linux根据目录中的另一个文件重命名文件?

我有大约750个包含两个文件的目录:

long_somewhat_random_filename.jpg thumb.jpg 

我想要做的是使用find或类似的东西重命名thumb.jpglong_somewhat_random_filename_thumb.jpg 。 此刻,我的大脑有些模糊。

我可以用perl脚本来做,但是如果在bash中有一些简单的方法,那就容易了。

给脚本下面的一个镜头。 现在echo使它良性,所以你可以尝试之前,你买这么说。 如果您喜欢所见即所得,请删除echo并再次运行脚本以实际进行更改。

 #!/bin/bash while read file; do echo mv "${file%/*}/thumb.jpg" "${file%.*}_thumb.jpg" done < <(find . -type f ! -name "thumb.jpg" -name "*.jpg") 

输入

 $ find . -type f -name "*.jpg" ./dir1/dir1_foo_bar.jpg ./dir1/thumb.jpg ./dir2/dir2_foo_bar.jpg ./dir2/thumb.jpg ./dir3/dir3_foo_bar.jpg ./dir3/thumb.jpg ./dir4/dir4_foo_bar.jpg ./dir4/thumb.jpg ./dir5/dir5_foo_bar.jpg ./dir5/thumb.jpg 

产量

 $ ./mvthumb.sh mv ./dir1/thumb.jpg ./dir1/dir1_foo_bar_thumb.jpg mv ./dir2/thumb.jpg ./dir2/dir2_foo_bar_thumb.jpg mv ./dir3/thumb.jpg ./dir3/dir3_foo_bar_thumb.jpg mv ./dir4/thumb.jpg ./dir4/dir4_foo_bar_thumb.jpg mv ./dir5/thumb.jpg ./dir5/dir5_foo_bar_thumb.jpg