gpt4 book ai didi

bash - 需要 grep 具有特定扩展名的文件并移动到另一个文件夹

转载 作者:行者123 更新时间:2023-11-29 09:41:35 24 4
gpt4 key购买 nike

我想编写一个 bash 命令,将当前文件夹中具有模式的所有 *.txt 文件 grep 文件删除到另一个文件夹。我应该使用 find 还是 for 循环?我尝试使用 find 但它似乎使事情变得复杂。

编辑:我想将具有特定模式的文件复制到其他文件夹。例如:

A.txt
B.txt
C.txt

都包含“foo”这个词。我希望 grep 删除“foo”并将其发送到具有相同名称的不同文件夹。我不想以任何方式更改原始文件。

最佳答案

使用for可能比find容易得多。像这样的事情:

otherdir='your_other_directory'
for file in *.txt; do
grep -q 'foo' $file && grep -v 'foo' < $file > $otherdir/$file
done

如果您的 grep 不理解 -q 那么:

otherdir='your_other_directory'
for file in *.txt; do
grep 'foo' $file > /dev/null && grep -v 'foo' < $file > $otherdir/$file
done

无论如何,如果 grep 找到匹配项,并且 X && Y 构造执行 Y,则它会向 shell 返回一个真值如果 X 返回真值,则命令。

更新:上述解决方案假设(如 Johnsyweb 所述)您要删除任何包含“foo”的。如果您只想删除“foo”而不删除整行,那么 sed 是您的 friend :

otherdir='your_other_directory'
for file in *.txt; do
grep -q 'foo' $file && sed 's/foo//g' < $file > $otherdir/$file
done

或者:

otherdir='your_other_directory'
for file in *.txt; do
grep 'foo' $file > /dev/null && sed 's/foo//g' < $file > $otherdir/$file
done

关于bash - 需要 grep 具有特定扩展名的文件并移动到另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6209703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com