ファイル形式が決定しました[閉じる]

ファイル形式が決定しました[閉じる]

製品の一部として複数のスクリプトが提供されます。

スクリプトの1つで動作しない次の行が見つかりました。

find . -name *.old -type f -mtime +7 | xargs compress -f

file*.old ファイルのいずれかでコマンドを実行すると、次の結果が表示されます。ASCII text, with very long lines

何ができるかを提案してもらえますか?

ベストアンサー1

このコマンドの出力は、コマンドシーケンスが失敗した理由とは関係ありませんfilefile

元のコマンドの出力に加えて、find最も興味深いのは次の出力です。

find . -name *.old -type f -mtime +7

エコーされたファイル名がない場合はcompress引数なしで呼び出されるため、標準入力を待ちます。ファイル名にスペースが含まれていると、xargsファイルを圧縮する際に問題が発生する可能性があります。

少なくとも、次のように変更してください。

find . -name "*.old" -type f -mtime +7 -print0 | xargs -0 --no-run-if-empty compress -f

OPコメントに基づいて更新すると、次のようになります。

find . -name "$FILE" -type f $ACTION_TYPE +$PARAM -print0 | xargs -0 --no-run-if-empty compress -f 

forは、スペースを含むファイル名が圧縮に正しく渡されるよう-print0にしますfind-0ファイルがまったく見つからないと、実行はブロックされ
ます。--no-run-if-emptyxargscompress

おすすめ記事