以下を使用して圧縮するジョブを設定するログディレクトリがあります。アーカイブ。問題は、すでに圧縮されているログを再圧縮したくないことです。
を使ってみましたが、うまくls | grep -v gz | gzip
いかないようです。
これを行う方法はありますか?デフォルトでは、.gzで終わらないディレクトリ内のすべてのファイルをgzipに圧縮したいと思います。
答え1
次のことができます。
gzip *
gzipは、すでに終了したファイルをスキップしていることを示します.gz
。
このメッセージが邪魔になった場合は、次のものを使用できます。
gzip -q *
圧縮するファイルのファイル名を標準入力から読み取ることができないため、試す方法は機能しませんgzip
。機能するには、以下を使用する必要があります。
ls | grep -v gz | xargs gzip
gz
末尾だけでなく、ファイル名のどこからでもそのパターンを持つファイルを除外します。ls
スペース、改行などを含むファイル名の場合、解析された出力が危険であることも知っておく必要があります。
gzip
終わりのあるファイルをスキップすることに頼らず、.gz
サブディレクトリの圧縮されていないファイルも処理するよりきれいな解決策:
find . -type f ! -name "*.gz" -exec gzip {} \;
1 説明通りizkata
:.gz
これを改善するために単独で使用すると機能しません。grep -vF .gz
またはを使用する必要がありますgrep -v '\.gz$'
。これは依然としてls
「出力」を処理するリスクを表している。