特定の月のログイン ディレクトリ内のファイルの長いリストを出力するための bash スクリプトを作成しています。ユーザーは大文字で始まる月名の最初の 3 文字を入力するように求められ、プログラムはその月に最後に変更されたすべてのファイルの長いリストを表示します。
たとえば、ユーザーが「7 月」と入力した場合、7 月に最後に変更されたすべてのファイルが一覧表示されます。
ファイルを日付でソートしてから制限することはできますか? それとも別の方法で行うことができますか?
この答えを見てください:https ://stackoverflow.com/a/5289636/851273
月と年の両方をカバーしますが、年との一致を削除することもできます。
これがそれを行うべきスクリプトです
Month=Dec
ls -ltr |awk '$6 ~ /'$Month'/ {print $9}'
これにより、ls フィールド ($6) の日付フィールドが awk によって参照され、ls -ltr によって日付順に並べ替えられます。次に、変数 $Month を展開し、それを使用して $6 フィールドを検索し、ファイル名 (9 番目のフィールド $9) を出力します。
read mon
la -la | grep $mon
grep -i
大文字と小文字を区別しない grep を実行できます。そのため、ユーザー入力では大文字と小文字が区別されない可能性があります。
注: これは、月名と一致するテキストを含む結果を返すため、大雑把です。例:月ごとに名前が付けられたファイルを返します。これを絞り込むには、日付列を確認するだけです