バッシュを使用してください。
次のファイルを含むディレクトリDがあるとします。
20170301:00.out.gz
20170301:01.out.gz
...
20170302:01.out.gz
20170302:02.out.gz
etc.
これらのファイルは、「yyyymmdd:hh」(年、月、日、時間)パターンに従います。 Bashを使ってこれらのファイルのいくつかを解凍したいのですが、まだ何をすべきかわかりません。
ファイルの場合はもちろん、「gunzip -c yyyymmdd:hh.out.gz」を使用できますが、各ファイルをハードコードするのは少し不要です。
たとえば、3月7日から3月14日までのファイルのみを抽出したい場合はどうすればよいですか?
答え1
Bashを使用しているので、次のものを使用できます。支柱の拡張:
gunzip {20170307..20170314}*.gz
ファイルの内容のみを表示する-c
には で確認してくださいgunzip
。
順番にファイルが失われた場合は、gunzip
そのファイルについて文句を言いますが、それでもすべてのファイルを処理します。はい順番に存在します。この場合、shellオプションがsetの場合、拡張自体は失敗しますfailglob
が、これはBashのデフォルトではないことにも注意する価値があります。
答え2
gunzip -c
実際に解凍せずに内容を標準出力にのみ記録します。
あなたの目的に応じて:
for a in {07..14}; do gunzip -c '201703'$a':02.out.gz'; done
答え3
find
方法:
find . -maxdepth 1 -type f -regextype posix-egrep \
-regex ".*/201703(0[7-9]|1[0-4]):[0-5][0-9]\.out\.gz$" -exec gunzip {} \;