
隨著日誌檔案變得越來越大,我正在嘗試製作一些備份腳本。我所擁有的是處理當前文件(例如secure
中的文件/var/log/
)並從該文件中刪除內容。但是有一些文件的名稱如下:secure.1
,secure.2
所有這些我喜歡對它們進行計數,如果數字更大,則將2
它們全部存檔。我找不到找到這些文件或對它們進行計數的方法。我首先想到的是:
find /var/log/ -name *.1 | wc -l
並且這將始終列印,1
因為只有一個文件secure.1
。我如何像在 for 迴圈中一樣計數,在其中我可以指定類似{1..5}
或相似的數字範圍。有沒有一種方法可以分離這些檔案並將它們作為一個檔案進行備份或刪除或其他什麼...或者首先我如何找到所有以數字結尾的數字。
答案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
- shell 使用與-name
.如果所有檔案都在一個目錄中...當然,如果有您也感興趣的子目錄,那麼find
可能會有所幫助 - 在 shell 中遍歷樹可能會頭痛。