2011-09-09 5 views
0

문제를 찾을 수 없습니다 키워드의 목록을 발견 : 나는 파일 호출 keywords.txt이 같은 키워드의 목록을 가지고키워드 목록 주어진 이름으로 파일 목록을 찾기 및

141367 
141374 
141376 
141368 

및 그 이름에있는 키워드가있는 파일을 찾기 위해 큰 복잡한 폴더를 검색해야합니다. 나는 2 개의 다른 명부의보고를 필요로한다.

  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

'파일'쿼리가 파일의 내용을 검색 (+ ver4) bash에 뭔가가 어떻게 그냥 파일의 이름을 검색 할 것입니까? – user366735

+0

Woops, 나는 그것을 뒤로 가져 간다. 그러나 '파일'쿼리가 디렉토리의 모든 파일을 나열한 것처럼 보이지만 keywords.txt 파일을 기반으로 필터링하지 않았습니다. – user366735

+0

나는 그것을 다시 가져 간다. 첫 번째 쿼리는 훌륭하게 작동했습니다. 두 번째 것은 나를 위해 일하지 않습니다. 'fgrep -f keywords.txt <<< "$ files"| sort '는 키워드 목록이 아닌 파일 이름 목록을 가져 왔습니다. – user366735

0

여기

#!/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 
관련 문제