bash脚本 - 使用查找/重命名重命名子目录中的文件

时间:2013-12-18 09:35:06

标签: bash

我有一大堆目录和子目录,其中包含许多jpgs。我需要做两件事:

  1. 创建在其自己的子目录中找到的每个jpg的副本
  2. 重命名此复制的jpg,使apple.jpg成为apple_m.jpg
  3. 我尝试按顺序运行以下命令:

    //这会创建一个找到的每个jpg的副本,并将'_m'附加到它的末尾

    find . -name '*.jpg' -execdir cp {} {}_m \;
    

    //现在再次使用'jpg_m'找到所有内容并将其重命名为filename_m.jpg

    find . -name '*.jpg_m' -execdir rename -v 's/\.jpg_m/_m\.jpg/' {} \;
    

    然而第二个命令似乎没有用,有人可以解释一下我做错了什么吗?

    谢谢, 阿迪

2 个答案:

答案 0 :(得分:0)

要重命名文件,您可以这样简单地使用它 rename ".jpg_m" "_m.jpg" files_to_rename

因此,如果要复制和重命名,可以这样重命名:

find . -name "*.jpg_m" -execdir rename ".jpg_m" "_m.jpg" {} \;

答案 1 :(得分:0)

为什么不一次性完成?

find . -name '*.jpg' -exec cp {} m_{} \; -exec rename "m_" "" {} \;