番号で終わるファイルを検索


10

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

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

そして、これ1は1つのファイルがあるので常に印刷されますsecure.1。どのようにしてforループのように数えることができます{1..5}か?このファイルを分離して1つのファイルにし、バックアップまたは削除するか、または何をする方法はありますか...または、最初に、番号で終わるすべての番号をどのようにして見つけることができますか?


1
ワイルドカードを引用するのを忘れましたか?find /var/log/ -name '*.1' ...
muru、2014年

1
logrotateあなたの目的をチェックすべきだと思います。
Costas

回答:


15

シンプルで-name

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

または任意の数字:

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

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

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

名前に数字のみを含むものを見つける方法
letthefireflieslive


1

どうして...

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.