フォルダー内に多数のファイルがあり、それぞれファイル名として日付が含まれています。
例えば
20130101
20130102
20130103
.
.
.
20130131
他の月20130201から20130230についても同様に、パターンは[年] [月] [日]です。 JANからAPRILまでの最初の15ファイルのtarファイルを作成する必要があります(つまり、2013[01-04][01-15]
)、grep
では2桁の数値範囲が許可されていないため。このパターンをどのように検索すればよいですか?
zsh
の場合:
tar zcf ~/file.tar.gz 20130<1-4><1-15>
bash
を使用する必要がある場合:
shopt -s extglob
tar zcf ~/file.tar.gz 20130[1-4]@(0?|1[0-5])
検索を使用してファイル名を検索します。
find . -maxdepth 1 -name "20130[1-4]0?" -o -name "20130[1-4]1[0-5]"
それが正しいセットであるかどうかを確認し、出力をcpio
の入力として使用します。
find . -maxdepth 1 -name "20130[1-4]0?" -o -name "20130[1-4]1[0-5]" | cpio --create --format=ustar -O file.tar
@richardは、これがサブディレクトリをトラバースする可能性があることを指摘しました(サブディレクトリがパターンと一致する場合)(そしてシェルがパターンを拡張し、修正しました)。
コマンドラインで展開すると、コマンドラインのriskが長くなりすぎます。これは、毎日数秒ごとにファイルがある場合に発生する可能性があります(20130101-00005
、20130101-00007
。ファイル名をcpio
にパイピングしても問題ありません。
Grepビットです。
grep -zE "^20130[1-4](0[1-9]|1[0-5])$"