将文件批量重命名为其文件夹名称

将文件批量重命名为其文件夹名称

我有一个这样的文件夹结构:“Pictures/2015/2015-01-02/random_name.jpg”,我想将文件重命名为“2015-01-02 001.jpg”、“2015-01-02 002”。 jpg'等

我不太熟悉 bash 编程和 perl 表达式,因此非常感谢任何帮助!提前致谢

答案1

cd target_dir
dcomp="$(basename "$(pwd)")"
count=1
for file in *; do
    ext="${file##*.}"
    mv -v "$file" "$dcomp $(printf '%03d' "$count").$ext"
    (( count++ ))
done

这假设您确实希望结果文件名中有一个空格,这不是一个好主意。当然,您可以将循环内的模式更改为您想要的任何模式。要对多个目录执行此操作,请将整个内容放在它们之上的循环中。

答案2

这就是你所需要的;)

 cd Pictures/2015/2015-01-02
 c=0 curdir=${PWD##*/} rename -n '
     s/.*/sprintf("%s %.03d.jpg", $ENV{curdir}, $ENV{c}++)/e' *jpg

显然,这是Perl的重命名。

-n测试后拆下开关(空运行)。

相关内容