ログファイルが大きくなるにつれて、いくつかのバックアップスクリプトを作成しようとしています。私が持っているのは、現在のファイル(たとえば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
興味のあるサブディレクトリがあれば役立ちます。シェルでツリーをナビゲートすると便利です。非常に頭痛があります。