簡體   English   中英

重命名Shell腳本中的文件以進行循環

[英]Renaming files in Shell script for loop

我運行OS X並有多張照片,並開始將它們命名為xyz-100.jpgxyz-101.jpgxyz-102.jpgxyz-402.jpg ,現在想通過將數字減少99來重命名它們,使其成為xyz-1.jpgxyz-2.jpgxyz-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 barln 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM