数字で終わるファイルを探す

数字で終わるファイルを探す

ログファイルが大きくなるにつれて、いくつかのバックアップスクリプトを作成しようとしています。私が持っているのは、現在のファイル(たとえばsecureにあるファイル/var/log/)を処理し、そのファイルから内容を削除することです。しかし、次のような名前のファイルがいくつかあります。secure.1みんなsecure.2で数えて数字が大きければ、2みんなで保管したいです。このファイルを検索または計算する方法が見つかりません。私の心に最初に浮かぶのは次のとおりです。

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

1そしてファイルは1つだけなので、常に印刷されますsecure.1。類似{1..5}または類似の範囲の数値を指定できるforループのように計算するにはどうすればよいですか?これらのファイルを分離してバックアップや削除などのために1つのファイルにする方法はありますか?それとも、最初に数字で終わるすべての数字をどのように見つけますか?

答え1

一般的な話す-name

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

または任意の数字について:

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

または、数字の後に他の文字がある場合:

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

答え2

.[1〜5]の範囲の数字で終わるファイル名を見つけます。

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

答え3

ただ、なぜそれをしないでください...

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

私が知る限り、findシェルを使う必要はありません-name。すべてのファイルが1つのディレクトリにある場合...もちろん、find興味のあるサブディレクトリがあれば役立ちます。シェルでツリーをナビゲートすると便利です。非常に頭痛があります。

関連情報