現在、次のスクリプトがあります。
find . -name '*.log' -print0 | xargs -0 tar zcf $file
すべての「* .log」ファイルを収集します。すべての ".txt"ファイルを含めるように変更したいのですが、方法がわかりません。かなり簡単でしょう。そうですか?
答え1
findコマンドを変更する方法はいくつかあります。これは:
find . \( -name '*.log' -o -name '*.txt' \) -print0
これは-o
OR演算子なので、最初の条件が失敗した場合は2番目の条件を確認します。 GNU findがある場合は、適切な名前のfindを使用することもできます-or
。最初の式が有効な場合、2番目の式は評価されません。
答え2
-regex
代わりにフラグを使用している場合は、-name
名前を正規表現として指定できます。
find . -regex '.*\.\(log\|txt\)' -print0 | xargs -0 tar zcf $file