2017-08-12 110 views
0

我有一個目錄和文件看起來像這樣使用Linux遞歸更改文件名?

/Folder/A/12 3ER This.docx 
/Folder/A/12 3ER Namespace.docx 
/Folder/A/12 QW Blah.docx 
/Folder/A/12 QW BlahBlah.docx 
/Folder/B/12 3ER Annoying.docx 
/Folder/B/12 3ER Were.docx 
/Folder/B/12 QW Stack.docx 
/Folder/B/12 QW Overlow.docx 
... 

我想所有包含3ER文件重命名爲_My_

因此,目錄和文件應該看起來像

/Folder/A/12_My_This.docx 
/Folder/A/12_My_Namespace.docx 
/Folder/A/12 QW Blah.docx 
/Folder/A/12 QW BlahBlah.docx 
/Folder/B/12_My_Annoying.docx 
/Folder/B/12_My_Were.docx 
/Folder/B/12 QW Stack.docx 
/Folder/B/12 QW Overlow.docx 
... 

哪有我在Linux上這樣做?

+0

有關如何使用操作系統而不是如何編寫軟件的問題,更適合[unix.se] SE或[SuperUser](https://superuser.com/)。這就是說 - 你可能會發現[BashFAQ#30](http://mywiki.wooledge.org/BashFAQ/030)有趣;它演示的內容和你需要的僅僅是使用不同的[參數擴展](http://wiki.bash-hackers.org/syntax/pe)。 –

+0

這可以說是[搜索+替換文件名中的字符串]的重複(https://stackoverflow.com/questions/7171659/searchreplace-strings-in-filenames)。 –

回答

1
find . -name '* 3ER *' -print0 | while IFS= read -r -d '' filename; do 
    mv -- "$filename" "${filename// 3ER /_My_}" 
done