我有一个这样的文件夹结构:“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
测试后拆下开关(空运行)。