2013-03-25 173 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