Linux
正則表達式替換附加文件名
如何使用正則表達式將字元附加到 linux 中的文件名?我看過這兩個文章
- https://stackoverflow.com/questions/6985873/change-names-of-multiple-files-linux
- 如何通過替換文件名中的單詞來重命名多個文件?
但一直無法得到為我工作的答案。我也不確定這是否屬於這裡、堆棧溢出或另一個子站點。
我一直在努力
for FILE in \d+_\d+\.png; do echo "$FILE" $(echo "$FILE" | sed 's/\./_t\./'); done
但這似乎無法將正則表達式文件名辨識為正則表達式。
所以對於數據樣本,我的文件目前是
1111_2222.png
我希望他們成為
1111_2222_t.png
這些文件分散在五個目錄中。謝謝。
[vagrant@vm-one ~]$ ls 1111_2222.png 1111_4444.png 1111_6666.png [vagrant@vm-one ~]$ for f in `ls | egrep '[0-9]+_[0-9]+\.png'`; do mv "$f" "${f/.png/_t.png}"; done [vagrant@vm-one ~]$ ls 1111_2222_t.png 1111_4444_t.png 1111_6666_t.png
來源
這在我的測試中對我有用..
shopt -s globstar; for i in **; do test -f ${i} || continue; ext=${i##*.}; echo mv $i ${i%%.${ext}}_t.${ext}; done; shopt -u globstar;
它希望您位於正確的基本目錄中。請注意,它不假設文件是什麼副檔名或文件名格式的“開始”是什麼。當心。