2011-09-09 95 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