查找-exec awk重定向到文件

时间:2019-01-23 16:30:01

标签: awk find exec

我有以下脚本:

找到具有特定扩展名的文件后,它将检查所述文件是否具有特定单词。

find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) -prune -o -type f \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" -o -name "*.js" \) -exec awk '/FOO/{f=1;exit} END{if (!f) printf "%s\0", FILENAME}' {} \; 

我想将带有该单词的所有文件的名称输出到一个简单的文本文件中。我已经尝试过

find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) -prune -o -type f \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" -o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" -o -name "*.js" \) -exec awk '/FOO/{f=1;exit} END{if (!f) printf "%s\0", FILENAME}' {} \; > output.txt

但是,我得到的输出文件为空。谢谢。

1 个答案:

答案 0 :(得分:1)

也许带有xargs:

find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) \
-prune -o -type f \( -name "*.java" -o -name "*.cs" -o -name "*.cpp" -o -name "*.cxx" \
-o -name "*.cc" -o -name "*.c" -o -name "*.h" -o -name "*.scala" -o -name "*.css" \
-o -name "*.js" \) | xargs grep -L word > list_of_files_missing_word.txt