如何在Bash中使用find命令与echo命令配合?

5

我有10个文件。我可以使用find . -type f列出它们,我想要做的是在找到这些文件后向它们发送一条消息。

我尝试过使用find . -type f -exec echo "This file found" >> {} \;,但似乎并没有起作用。请问是否有仅使用findecho的方法可以实现我想要的功能呢?

谢谢!

1个回答

11

在执行find命令之前,首先进行的是shell重定向操作>>,创建一个名为{}的文件,并将字符串(其中包含文件数量)写入文件{}

你需要:

find . -type f -exec bash -c 'echo "This file found" >>"$1"' _ {} \;

你又来了,哦,老兄。你怎么知道这么多东西啊?:P 别说是学习的。 - Raja G
@Raja 看来时间正好啊 :P - heemayl
是的,Heemayl。再次感谢你。 :) - Raja G
我不明白_的目的。为什么不直接使用$0而不带有_这个字符呢? - oliv
从技术上讲,bash -c "..." 的第一个参数是用于 $0 的值,而不是第一个位置参数。你可以使用 bash -c "echo "This file found" >> "$0"' {},但这可能滥用了 $0 参数。(我不知道如果你这样做会出现什么问题,不过。) - chepner
1
@chepner,我对你的解释并不完全认同...至少这不是man手册所说的。我在这里提出了一个问题(https://dev59.com/7lkT5IYBdhLWcg3wPtMv) - oliv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接