Rename

如何通過刪除字元或字元串來重命名多個文件?

  • March 3, 2022

作為我上一個問題的後續行動,如果我有多個表格文件

sw.ras.001
sw.ras.002
sw.ras.003
…

我可以使用什麼命令來刪除ras.所有文件中間的 ?

您可以通過對上一個問題的任一答案進行相當小的修改來做到這一點:

rename s/ras\.// sw.ras.*

要麼

for file in sw.ras.*; do
   mv "$file" "${file/ras./}"
done

解釋:

rename是一個perl腳本,它採用perl正則表達式和文件列表,依次將正則表達式應用於每個文件的名稱,並將每個文件重命名為應用正則表達式的結果。在我們的例子中,ras匹配字面量並\.匹配一個字面量.(因為.單獨表示除換行符以外的任何字元),並且它用任何內容替換它。

循環獲取所有以(標準 shell glob)for開頭的文件並循環它們。搜尋並用 替換第一個匹配項,因此返回刪除第一個匹配項。因此,該命令將文件重命名為同名減號。請注意,對於這種搜尋和替換,是按字面意思理解的,而不是作為特殊字元。sw.ras.``${var/search/replace}``$var``search``replace``${file/ras./}``$file``ras.``ras.``.

引用自:https://unix.stackexchange.com/questions/33279