给定关键字列表并查找未找到的关键字列表,按名称查找文件列表

时间:2011-09-09 23:12:06

标签: bash unix find

问题:我在文件调用keywords.txt

中有一个像这样的关键字列表
141367
141374
141376
141368

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

  1. 找到的文件列表,其中包含名称中的任意关键字。
  2. 从未在任何文件名中找到的关键字列表。
  3. 帮助?

2 个答案:

答案 0 :(得分:2)

未测试

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

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

答案 1 :(得分: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