2013-03-25 206 views
0

我有一個文件夾裏面有大量的文件夾和文件。我想做一個查找和替換:查找和遞歸替換

  • 之前:'my_folder。'
  • 後: ''(空)

這裏是我試過(雖然它沒有工作)

find ./ -type f -exec sed -i ‘s/my_folder.//’ {} \; 

什麼是正確的命令嗎?

+3

確保使用ASCII引號。 – kev 2013-03-25 01:15:36

+2

@ David542:它以哪種方式失敗?您是否期望sed命令重命名文件,或者更改其中的內容? – tink 2013-03-25 01:45:54

+0

http://theunixshell.blogspot.com/2012/12/find-and-replace-string-in-all-files.html – Vijay 2013-03-25 12:39:16

回答

0

你正在尋找的命令,是勝負的是這樣的:

find ./ -type f -exec sed -e "/my_folder./s/my_folder.//" {} \; 

但您能得到的是輸出打印在屏幕上,而不是寫回文件。爲了完成這樣的事情,我認爲你應該有一行以上的代碼,但這裏的「意見」是關鍵字。像這樣的東西可能會幫助

for file in $(find ./ -type -f) 
do 
    cat ${file} | sed -e "/my_folder./s/my_folder.//" > MyTempFile 
    cat MyTempFile > ${file} # use this instead of 'mv' command to preserve file perms 
done 

希望這有助於

+0

無用的貓:'sed -e「/my_folder./s/my_folder.//」<$ file' – Jens 2013-03-25 14:01:08