回答:
あなたはただすることができます:
gzip *
gzipは、既に.gz
終了しているファイルをスキップすることを通知します。
そのメッセージが邪魔になる場合は、次を使用できます。
gzip -q *
あなたが試みたものは動作gzip
しませんでした、なぜならstdinから圧縮するファイルのファイル名を読み取らないからです。
ls | grep -v gz | xargs gzip
gz
末尾だけでなく、ファイル名の任意の場所にあるパターンのファイルを除外します。¹またls
、スペースや改行などのファイル名がある場合、出力の解析は危険であることに注意する必要があります。
末尾のgzip
ファイルをスキップすることに依存しない、よりクリーンなソリューション.gz
は、サブディレクトリ内の非圧縮ファイルも処理します。
find . -type f ! -name "*.gz" -exec gzip {} \;
¹ としては、izkata
次のようにコメントし使用して.gz
の作業、これを改善するだけではないでしょう。grep -vF .gz
またはを使用する必要がありますgrep -v '\.gz$'
。ls
出力を処理する危険性が残っています
$
を除外(-v
)して、正規表現を固定しません。そのため、「gz」で始まる名前のファイルが含まれます。
gz
、名前の最初の部分(開始部分を除く)のファイルも除外します。とにかくそれを固定する方が良いです。を使用し$
ていない.
ので、正規表現で何を意味するのか理解していないかのように読み取られるため、残りの混乱したコメントになります。
$
すると明確になります。そして、あなたは脱出していない.
、唯一というファイルを除外するために起こっているので、とにかくを開始してgz
(彼らは「前に任意の文字を持っていないので、gz
」)