查找和递归替换
问题描述:
我有一个文件夹里面有大量的文件夹和文件。我想做一个查找和替换:查找和递归替换
- 之前:'my_folder。'
- 后: ''(空)
这里是我试过(虽然它没有工作)
find ./ -type f -exec sed -i ‘s/my_folder.//’ {} \;
什么是正确的命令吗?
答
你正在寻找的命令,是胜负的是这样的:
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.//” Jens 2013-03-25 14:01:08
确保使用ASCII引号。 – kev 2013-03-25 01:15:36
@ David542:它以哪种方式失败?您是否期望sed命令重命名文件,或者更改其中的内容? – tink 2013-03-25 01:45:54
http://theunixshell.blogspot.com/2012/12/find-and-replace-string-in-all-files.html – Vijay 2013-03-25 12:39:16