[英]Renaming files in Shell script for loop
我運行OS X並有多張照片,並開始將它們命名為xyz-100.jpg
, xyz-101.jpg
, xyz-102.jpg
到xyz-402.jpg
,現在想通過將數字減少99來重命名它們,使其成為xyz-1.jpg
, xyz-2.jpg
到xyz-303.jpg
。
我知道我可以使用mv
命令,但是我似乎無法在文件名中實現變量,例如xyz-$reduced.jpg
。 我該怎么做呢?
這樣的事情應該起作用。 但我不確定您如何獲取文件數量。 您也可以列出另一個列出文件名的文件,以達到與此相同的效果。 但這應該可以幫助您入門
num_array=(1 2 3 4 5)
for i in "${!num_array[@]}"; do
mv -i ./"myfile_${i}.jpg" /somehwere_else
done
我強烈建議您將它們移動到另一個目錄,因為否則在中途發生一些不良情況時,您可能會感到困惑。 因此,請嘗試:
mkdir tmp
for ((n=100; n<=402; n++)); do
ln xyz-$n.jpg tmp/xyz-$((n-99)).jpg
done
那應該為您提供tmp/
所需的文件。 然后,您可以將該目錄移至所需位置,然后刪除舊文件。 如果您不熟悉ln
,可以將其視為mv
一半。 基本上, mv foo bar
與ln foo bar; rm foo
相同ln foo bar; rm foo
ln foo bar; rm foo
。 通過將新命名的文件鏈接到子目錄中,您將不會遇到任何沖突,從而可以弄清文件150是150還是重命名為249。此外,不要遍歷現有文件並嘗試解析數字,只需使用jot
生成您想要的名稱即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.