Linux中的批量文件重命名

时间:2016-01-12 13:46:03

标签: bash

我试图在Kali Linux中重命名很多文件,其中有近16,000个。它们被安排在近600个文件夹中,其中包含名称的随机数字,其中的文件在每个新文件夹中从0开始标记为0,1,2 ...(无文件扩展名)。我试图将文件转换为.jpg格式。以下代码仅在我打开终端中的文件夹目录时起作用 -

    find . -name '[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;
    find . -name '[0-9][0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;
    find . -name '[0-9]' -exec sh -c 'mv $0 $0.jpg' {} \;

但要为目录中的每个文件夹执行此操作将会相当繁琐。有关.sh可执行脚本的任何建议吗?

编辑:必须更改扩展名,名称可以保持原样...

2 个答案:

答案 0 :(得分:2)

您可以使用单个查找命令:

find -type f -regextype posix-extended -regex '.*/[0-9]{1,3}' -exec mv -v {} {}.jpg \;

答案 1 :(得分:0)

如果您不介意安装其他工具,请使用rnm

rnm -rs '/^\d{1,3}$/&.jpg/' -fo -dp -1 /path
  1. ^\d{1,3}$是我们要查找的匹配项,替换部分中的&是指文件名中匹配的部分。
  2. -fo:仅文件模式
  3. -dp:dir的深度(-1表示无限制)。