2011-09-09 26 views
0

的问题的关键字列表:我在文件调用keywords.txt这样的关键字列表查找按名称的文件列表中给出的关键字列表和发现,并没有发现

141367 
141374 
141376 
141368 

和我需要使用它来搜索一个大的复杂文件夹,以查找名称中包含任何关键字的文件。我需要两份不同名单的报告。

  1. 找到的文件列表包含其名称中的任何关键字。
  2. 在任何文件名中都找不到的关键字列表。

帮助?

回答

2

未经检验

files=$(find folder_name -type f | fgrep -f keywords.txt) 

not_found=$(comm -23 <(sort keywords.txt) <(fgrep -f keywords.txt <<< "$files" | sort) 
+0

“文件”查询搜索文件的内容,你会怎么只是搜索的文件的名称? – user366735

+0

Woops,我把它拿回来。但它看起来像'文件'查询刚刚列出目录中的所有文件,它没有根据keywords.txt文件过滤它。 – user366735

+0

我也回来了。第一个查询效果很好。第二个不适合我。 'fgrep -f keywords.txt <<<“$ files”|排序'产生了一个文件名列表,而不是关键字列表。 – user366735

0

这里的东西在bash(ver4 +)

#!/bin/bash 

filecontent=($(<file)) 
shopt -s globstar 
for file in ** 
do 
    found="0" 
    for word in ${filecontent[@]} 
    do 
     case "${file##*/}" in 
     *"$word"*) 
      echo "file found: $file with keyword: $w" 
      found="1" 
      ;; 
     esac 
    done 
    case "$found" in 
     "0") echo "No keyword file: $file";; 
    esac 
done