ファイルリストから取得した複数のディレクトリからファイルを検索しますか?

ファイルリストから取得した複数のディレクトリからファイルを検索しますか?
FreeBSD 9.2 RELEASE p2

ファイルがありますdirs.txt。このファイルには、次のように改行区切りのディレクトリのリストがあります。

/etc
/home
/home/goods/

まず、すべてのディレクトリで名前が「good」または「(NODES_'TASK」)文字列を含むファイルを見つけて、そのすべてのファイルをディレクトリにコピーする必要があります/tmp

私はこれが次のようになるべきだと思います。

$ find $fromDirs.txt -type f -name 'good' | \
    grep -lr '\(NODES_\'TASK\'\)' $fromDirs.txt | > /tmp

ベストアンサー1

私が理解したのは、ディレクトリのリストを含むファイルです。すべてのファイルが欲しい:

  1. ファイルの内容に含まれるリストのディレクトリ内(NODES_'TASK')
  2. リスト内のファイル名にはgood

次に、一致するファイルを/tmp

IFS=$'\n' read -d '' -r -a dirs < fromDirs.txt
find "${dirs[@]}" -type f \( -name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;

これはfromDirs.txt配列で区切られた改行文字を読み取ります$dirs
次に、findそのディレクトリを見て、パスのディレクトリにが含まれているか、ファイルgoodに含まれている場合は、(NODES_'TASK')そのファイルを/tmp

(注:ここでは、ファイルのリストを改行文字に分割するためにbash関連の機能を使用しています。)

おすすめ記事