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
私が理解したのは、ディレクトリのリストを含むファイルです。すべてのファイルが欲しい:
- ファイルの内容に含まれるリストのディレクトリ内
(NODES_'TASK')
- リスト内のファイル名には
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関連の機能を使用しています。)