命令find
本身就可以用来查找文件。但如果查询条件略显复杂的话,事情就没那么简单了。
比如,要查找当前目录下既包含字符串"abc",又包含字符串"def"的文件,可以用下面的命令:
find . -type f -exec \ awk '/abc/ {fa=1} /def/ {fb=1} fa && fb {print FILENAME; exit;}' {} \;
要查找当前目录下既包含字符串"abc",又不包含字符串"def"的文件,可以稍作修改如下:
find . -type f -exec \ awk '/abc/ {fa=1} /def/ {fb=1} END {if(fa && ! fb) print FILENAME}' {} \;
理论上,这可以处理任何逻辑了。