回答:
次のように複数のパターンで照合できます。
awk '/Jun/ || /July/ || /Aug/' <(ls -lrh)
これにより、6月、7月、8月のすべての一致が返されます。これはデフォルトのアクションでprintあるため、ステートメントは不要awkです。
awk '/Jun|Jul|Aug/'場合awk '/Ju[nl]|Aug/'
原則として、lsの出力を解析することは非常に悪い考えです。あなたが望むことをするより良い方法は
stat -c "%n %y" * | grep 2013-0[678]
または、最後のフィールドのみをチェックして、ファイル名自体が日付であるというまれなケースから保護します。
stat -c "%n %y" *| awk '$NF ~ /2013-0[678]/'
からman stat:
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each use of FORMAT
%y time of last modification, human-readable
%n file name
| awk '$NF ~ /2013-0[678]/'に変更して、日付が一致しない場合でも、ファイル名が正規表現と一致する(そうではない?)であっても、最後の出力フィールドのみをチェックします。
ls人間が読める形式でファイルに関する情報を表示するコマンドです。スクリプトでは使用しないでください。
特定の基準に一致するディレクトリツリー内のファイルを検索するコマンドは、findです。GNU find(つまり、非組み込みのLinuxまたはCygwin)またはFreeBSD find(つまり、FreeBSDまたはOSX)がある場合-newermt、特定の日付以降に最後に変更されたファイルを照合するために使用できます。
find . -newermt '1 June' ! -newermt '1 September' -print
スクリプトの実行時の暦年ではなく、特定の年のファイルを照合する場合は、年を追加します。
検索実装にがない場合は-newermt、で行う必要があります。-newerこれは、find見つかったファイルの日付を固定ファイルと比較します。touch境界として使用する日付の一時ファイルを作成するために使用します。
dir=$(mktemp -d)
touch -d 201306010000 "$dir/from"
touch -d 201309010000 "$dir/to"
find . -newer "$dir/from" ! -newer "$dir/to" -print
rm -r "$dir"
[...]構成は単一の文字に一致します。これは、大括弧内の任意の文字にすることができます。そのため、式はJJAorJug(Jfrom[Jun]、ufrom[Jul]、gfrom[Aug])に一致しますが、一致させたいと思っていた月の省略形には一致しません。