ログファイルがどんどん大きくなるにつれて、バックアップスクリプトを作成しようとしています。現在のファイル(たとえば、/var/log/
のsecure
ファイル)をコピーして、そのファイルからコンテンツを削除しています。しかし、secure.1
、secure.2
のような名前のファイルがいくつかあり、これらすべてをカウントするのが好きです。数値が大きい場合は、2
を使用してすべてをアーカイブします。このファイルを見つける方法や、それらを数える方法が見つかりません。最初に思いついたのは、
find /var/log/ -name *.1 | wc -l
そして、これは1つのファイル1
があるため、常にsecure.1
を出力します。 {1..5}
などの数値範囲を指定できるforループのようにカウントするにはどうすればよいですか。このファイルを分離し、それらを1つにしてバックアップまたは削除する方法、または何をする方法がありますか...または、まず最初に、番号で終わるすべてのこの番号を見つける方法を教えてください。
単純な-name
:
find /var/log -name '*.[2-9]'
または任意の数字:
find /var/log -name '*.[[:digit:]]'
または、数字の後に他の文字が可能な場合:
find /var/log -name '*.[2-9]*'
番号が.
[1から5]の範囲で終わるファイル名を検索するには。
find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"
どうして...
for log in /var/log/*.[1-5]
do whatever to "$log"
done
私が知る限り、find
は必要ありません。シェルは-name
で使用するのと同じグロブを使用します。そして、すべてのファイルが単一のディレクトリにある場合...もちろん、興味のあるサブディレクトリがある場合は、find
が役立つ可能性があります。シェルでツリーを歩くのは頭痛の種になる可能性があります。