web-dev-qa-db-ja.com

数字で終わるファイルを検索

ログファイルがどんどん大きくなるにつれて、バックアップスクリプトを作成しようとしています。現在のファイル(たとえば、/var/log/secureファイル)をコピーして、そのファイルからコンテンツを削除しています。しかし、secure.1secure.2のような名前のファイルがいくつかあり、これらすべてをカウントするのが好きです。数値が大きい場合は、2を使用してすべてをアーカイブします。このファイルを見つける方法や、それらを数える方法が見つかりません。最初に思いついたのは、

find /var/log/ -name *.1 | wc -l

そして、これは1つのファイル1があるため、常にsecure.1を出力します。 {1..5}などの数値範囲を指定できるforループのようにカウントするにはどうすればよいですか。このファイルを分離し、それらを1つにしてバックアップまたは削除する方法、または何をする方法がありますか...または、まず最初に、番号で終わるすべてのこの番号を見つける方法を教えてください。

10
user3523605

単純な-name

find /var/log -name '*.[2-9]'

または任意の数字:

find /var/log -name '*.[[:digit:]]'

または、数字の後に他の文字が可能な場合:

find /var/log -name '*.[2-9]*'
15
jimmij

番号が. [1から5]の範囲で終わるファイル名を検索するには。

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"
3
Avinash Raj

どうして...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

私が知る限り、findは必要ありません。シェルは-nameで使用するのと同じグロブを使用します。そして、すべてのファイルが単一のディレクトリにある場合...もちろん、興味のあるサブディレクトリがある場合は、findが役立つ可能性があります。シェルでツリーを歩くのは頭痛の種になる可能性があります。

1
mikeserv