【问题标题】:Linux rename files based on another file in the directory?Linux根据目录中的另一个文件重命名文件?
【发布时间】:2011-05-26 10:02:25
【问题描述】:

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

long_somewhat_random_filename.jpg
thumb.jpg

我想做的是使用find 或类似的东西将thumb.jpg 重命名为long_somewhat_random_filename_thumb.jpg。此刻我的大脑有点模糊。

我可以使用 perl 脚本来完成,但如果在 bash 中有一种简单的方法,那就更容易了。

【问题讨论】:

    标签: linux bash batch-rename


    【解决方案1】:

    试一下下面的脚本。现在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
    

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2018-04-11
      • 2023-03-10
      • 2012-09-12
      • 2017-03-28
      相关资源
      最近更新 更多