2
我想要的文件夾結構如下命名:傳遞一個bash變量,一個Perl命令
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."
我所做的腳本試圖:
- 解析的文件夾結構
- 得到父文件夾的名稱(不XXX號)
- 重命名和消毒的文件名(重命名是一個Perl腳本 - >指http://plasmasturm.org/code/rename/)
- 創建一個完整版使用mogrify將圖像輸出到完整文件夾中。
我的問題是有關重命名命令:
rename -f -N ...001 -X -e '$_ = $N . '_' . $_' *.jpg
按照manual page是不可能性的文件,一個計數器爲前綴命名。 我知道這是一個與將bash參數傳遞給perl腳本有關的語法問題。我也在stackexchange上找到了同樣的答案,但我無法解決自己,因爲我不是Perl專家。
然後我意識到腳本非常簡單,但我想問問你是否有建議,以獲得相同的結果 - 使用bash,命令行 - 但以更好的方式。
謝謝。
這是bash,而不是Perl。你指的是什麼樣的Perl腳本?此外,您的示例樹輸出顯示文件名兩次。 – simbabque
我指的是用Perl編寫的rename命令http://plasmasturm.org/code/rename/ – fabiosirna
我認爲'-N ... 001'沒什麼特別的。這不是什麼魔術,它只是一個字符串。在'rename'程序中,它解析該字符串。我認爲你不需要第二個零,只是做'-N ... 01'就足以讓數字和原來一樣寬,並且填零。你用'-n'運行你的程序來做一個幹運行,看看會發生什麼? – simbabque