最新のファイルを10個圧縮

最新のファイルを10個圧縮

基本的に私の要件は、10個の最新のログを見つけてzipに圧縮することです。コマンドを試しましたが、ls -Lt | head -10 | zip log.zip *.log出力が一致しません。

ベストアンサー1

現在のディレクトリから10個の最新(一般)ファイルを安全に選択するには、を使用することをお勧めします。zshこれは、修正時間に基づいてファイルを安全かつデフォルトで選択するためです。

zsh -c 'zip log.zip *.log(.om[1,10])'

これは、zshの2つのワイルドカード(「glob」)修飾子と下付き文字演算子を使用します。

  • *.log( ... )- ワイルドカードで始まります。現在*.logディレクトリで次に終わるファイルをすべて選択し、次にフィルタリングします。.log
  • .- 一般ファイルのみを含むように結果リストをフィルタリングします。
  • om- 修正時間に基づいて結果リストを並べ替え(「並べ替え」)し、最新の項目から並べ替えます。
  • [1,10]- 要素1〜10(最も最近の10ファイル)を選択して結果リストを絞り込みます。

zshが10個の最新の一般ファイルを生成すると、それをコマンドに渡しますzip


脚注:

  1. デフォルトでは、zshは隠し(ドット)ファイルを選択しません。たとえば、.foo.log次のようなファイルがある場合。そしてこれを選択するには、Dグローバル修飾子(*.log(.Dom[1,10]))を含めるか、GLOB_DOTSオプションを設定(使用setopt globdots)できます。

おすすめ記事