以下は、見つかったファイルの結果を検索してダンプする find コマンドです。/tmp/findall.log
find /app/test -type d \( -name logs -o -name 'logs*' -o -name 'tmp*' \) -prune -o -print | tee /tmp/findall.log
次のように、検索結果でステージフォルダを表示できます。
grep stage /tmp/findall.log | more
/app/test/Server2/stage_02032020
/app/test/Server2/stage_02032020/Buyers
/app/test/Server2/stage_02032020/Buyers/BuyersQuote.xlsx
/app/test/Server2/stage_02032020/Buyers/xml
find
次に、次のコマンドを使用して結果で見つかったファイルを圧縮することにしました。
find /app/test -type d \( -name logs -o -name 'logs*' -o -name 'tmp*' \) -prune -o -print0 | xargs -0 tar -cvf /app/test_Backup.tar
しかし、私のtarファイルには、以下の検索結果のようにステージフォルダがありません。
tar -tvf test_Backup.tar | grep stage
No results Found.
検索結果のファイルがtarファイルから欠落している理由をお勧めしますか?
ベストアンサー1
空の文字列などが渡されたことを「発見」することができます。 "--no-run-if-empty"を使用して問題を解決することができます。その後、tarを生成しないでください。
find /app/test -type d \( -name logs -o -name 'logs*' -o -name 'tmp*' \) -prune -o -print0 | xargs --no-run-if-empty -0 tar -cvf /app/test_Backup.tar
ちなみにあなたのコードは私のRaspberry Piで実行されます。 GNU bash、バージョン 4.4.19(1)-リリース(armv7hl-redhat-linux-gnu)