我尝试重命名具有以下结构的文件夹:
xxx_name_surname/
├── whatever.jpg
├── foobar.jpg
├ [...]
├── barfoo.jpg
└── full
├── whatever.jpg
├── foobar.jpg
├ [...]
├── barfoo.jpg
之类的:
xxx_name_surname/
├── 001_name_surname.jpg
├── 001_name_surname.jpg
├ [...]
├── 011_name_surname.jpg
└── full
├── 001_name_surname.jpg
├── 002_name_surname.jpg
├ [...]
├── 011_name_surname.jpg
我使用以下脚本:
#!/bin/sh
for d in *;
do
if [ -d "$d" ]; then
cd $d;
folder_name=${PWD##*/}
image_name=${folder_name:4}
echo Current dir is:
echo $current_dir
echo "Rename and sanitize image in folder ..."
export $image_name
rename -f -N ...001 -X -e '$_ = $N . '_' . $_' *.jpg
echo
echo "Creating folder" $d"/full ..."
mkdir full
echo "Adding padding to image ..."
mogrify -path full -background white -gravity center -resize 1920x1080\> -extent 1920x1080 *.jpg
cd ..
echo
fi
done
echo "Done."
我制作的剧本试图:
我的问题与重命名命令有关:
rename -f -N ...001 -X -e '$_ = $N . '_' . $_' *.jpg
根据manual page,可以使用计数器作为前缀重命名文件。 我理解这是一个与将一个bash参数传递给perl脚本相关的语法问题。我在stackexchange上也找到了相同的答案,但我不能解决自己,因为我不是perl专家。
然后我意识到脚本非常简单,但是我想问一下你是否有建议以获得相同的结果 - 使用bash,命令行 - 但是以更好的方式。
感谢。
答案 0 :(得分:0)
<强>解强>
这解决了我的问题:
nil
所以最终的bash脚本是:
IMAGENAME=$(echo $image_name)
export IMAGENAME
rename -f -N ...001 -X -e '$_ = $N . "_" . $ENV{IMAGENAME}' *.jpg
注意强>
正如您所看到的,脚本不是最佳解决方案,但正在完成工作。