Linux

正則表達式替換附加文件名

  • April 3, 2015

如何使用正則表達式將字元附加到 linux 中的文件名?我看過這兩個文章

  1. https://stackoverflow.com/questions/6985873/change-names-of-multiple-files-linux
  2. 如何通過替換文件名中的單詞來重命名多個文件?

但一直無法得到為我工作的答案。我也不確定這是否屬於這裡、堆棧溢出或另一個子站點。

我一直在努力

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

來源

  1. ls | egrep片段已從此處檢索
  2. 基於這個mv $f ${f/.png/_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;

它希望您位於正確的基本目錄中。請注意,它不假設文件是什麼副檔名或文件名格式的“開始”是什麼。當心。

引用自:https://serverfault.com/questions/680348