如何使用Unix命令从子文件夹中的文件中删除一行?

时间:2012-10-22 22:48:45

标签: unix sed awk grep

我有一个文件夹结构,其中起始文件夹是test。 test中有两个文件夹。 test1和test2,加上一堆文件。这些文件以及test1和test2中的文件都有欢迎词。我试过这个并没有用

sed 's/\<welcome\>//g' **/*

我做错了什么?怎么办呢?

4 个答案:

答案 0 :(得分:4)

这可能适合你(GNU sed):

find test -type f -exec sed -i '/welcome/d' '{}' \;

答案 1 :(得分:1)

尝试这样做(GNU sed):

sed -i '/welcome/s/\<welcome\>//g' test/*

-i开关修改文件,所以要小心。

如果您的Unix不支持-i切换:

for i in test/*; do
    sed '/welcome/s/\<welcome\>//g' "$i" > /tmp/.sed && mv /tmp/.sed "$i"
done

答案 2 :(得分:1)

sed -e 's/welcome//g' test > test2

文件测试有几个条目,包括 welcome 。 上面的sed行删除了test的欢迎。

你可以把它放在一个循环中.. 而且我看到sputnick在很大程度上回答了你的问题! :P

答案 3 :(得分:1)

find . -type f|xargs perl -ni -e 'print unless(/<welcome>/)'