Rename
如何通過刪除字元或字元串來重命名多個文件?
作為我上一個問題的後續行動,如果我有多個表格文件
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.``.