【问题标题】:Find -exec awk redirect to filefind -exec awk 重定向到文件
【发布时间】:2019-01-23 16:30:00
【问题描述】:

我有以下脚本:

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

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

但是,我生成的输出文件是空的。谢谢。

【问题讨论】:

  • 你问的this问题有什么区别?
  • 所以在第一个问题中,如果所述文件还没有包含它,我想添加这个词。在这里,我只想知道哪些文件缺少 . output.txt 应该包含不包含该单词的文件名。 @downtheroad
  • 我明白了,看看答案

标签: awk find exec


【解决方案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

【讨论】:

  • 谢谢!!进行了一些编辑,以便它只打印文件名而不是路径,并且在新行上: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 | xargs -L 1 basename | sed -e 's/$/\r/g' > list_of_files_missing_word.txt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多