0
我需要一些幫助完成腳本以將文件夾文件依次重命名爲文件夾名稱。我原以爲這是一種常見的行爲,但我似乎無法找到我在搜索後究竟在尋找什麼。我發現了一些可以按順序重命名文件的工具,但我想將文件夾或目錄名追加到文件的前面。批量重命名文件以包含linux中的文件夾/目錄名稱
#!/bin/bash
a=1
for i in *.jpg; do
new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4
mv ${i} ${new}
let a=a+1
done
所以我想這些文件夾和文件:
~/tmp/6856u56u56.jpg
~/tmp/7567787.jpg
~/tmp2/46u65h5hh.jpg
~/tmp2/b656hy6hjh.jpg
的樣子:
~/tmp/UG-tmp-001.jpg
~/tmp/UG-tmp-002.jpg
~/tmp2/UG-tmp2-001.jpg
~/tmp2/UG-tmp2-002.jpg
~/tmp/(text)-(directory name)-(sequential numbering).(extension)
運行腳本之後。
任何人都可以幫我嗎?另外,文件不一定是.jpg,文件夾名稱中可能有空格。如果這是一個問題,請讓我知道。這是使用bash腳本的Linux。如果它運行良好,我可能會嘗試將它集成到文件管理器的右鍵單擊中。提前致謝!
我錯過了擴展可以在你的問題改變的一部分,你可以很容易地獲取該文件的擴展名在一個變量並追加它指的http:/ /stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash – girish
謝謝!我收到了一個錯誤,儘管當我嘗試自己弄明白這件事時,那個錯誤讓我感到困惑,但它必須是特定的發行版或其他東西。我在opensuse上,我得到一個「mv:target」blah-12.jpg'不是目錄「錯誤信息。你知道如何解決這個問題嗎?謝謝你的幫助! – user2905513
更新:我找到了一個搜索後,我在腳本之前添加了「IFS =''」,它修復了文件名問題中的空格。我真的希望它在編號時顯示爲零,而不是像0001那樣。我會嘗試自己弄清楚它,但是如果你知道如何解決這個問題並且不介意,我將不勝感激!謝謝! – user2905513