特定のパターンでファイルを圧縮するには、/bin/gzip を使用します。

特定のパターンでファイルを圧縮するには、/bin/gzip を使用します。

特定のモードでファイルを個別に圧縮したいです。たとえば、次のようなディレクトリがあります。

/log/log1
    -/1/log2/file.1
    -/1/log2/file123
    -/1/log2/file2.1
/log/log2
    -/2/log2/file4.1
    -/2/log2/file345
    -/2/log2/file3.1

/logで、拡張子が.1のすべてのファイルを繰り返し圧縮したいと思います。

結果は次のとおりです。

/log/log1
    -/1/log2/file.gz
    -/1/log2/file123
    -/1/log2/file2.gz
/log/log2
    -/2/log2/file4.gz
    -/2/log2/file345
    -/2/log2/file3.gz

ベストアンサー1

find+bash解決策:

find /log -type f -name "*.1" -exec bash -c 'gzip -nc "$1" > "${1:0:-2}.gz"; rm "$1"' _ {} \;

gzipオプション:

  • -n- 圧縮時にデフォルトでは、元のファイル名とタイムスタンプは保存されません。
  • -c- 出力を標準出力に書き込みます。ソースファイルは変更されません。

${1:0:-2}bash-の一部;最後の 2 文字が切り捨てられたファイルパスを取得します。

おすすめ記事