指定されたパターンに従う特定のファイルだけを解凍するには?

指定されたパターンに従う特定のファイルだけを解凍するには?

バッシュを使用してください。

次のファイルを含むディレクトリ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 {} \;

関連情報