是否有一种惯用的方法来检测“查找”是否找到了任何匹配项?我目前正在使用
COUNT=`find ... | wc -l`
if [ "$COUNT" -gt 0 ]; then
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎有点间接。另外,我希望 find 一旦找到匹配项就停止搜索,这样就不会浪费时间和精力。我只需要知道是否有任何匹配的文件。
更新:我犯了在没有代码的情况下编写问题的错误:我wc -l在不同的情况下使用,无论如何我需要知道找到的文件总数。在我只测试是否有任何匹配的情况下,我使用if [ -z $(find …) ].
Gil*_*il' 16
如果您知道您有 GNU find,请使用-quit 使其在第一次匹配后停止。
可移植地,将输出通过管道传输find到head -n 1. 这种方式find将在几次匹配后(当它被填充head的输入缓冲区时)死于管道破裂。
无论哪种方式,您都不需要wc测试字符串是否为空,shell 可以自行完成。
if [ -n "$(find … | head -n 1)" ]; then …
Run Code Online (Sandbox Code Playgroud)