
我正在嘗試創建一個 bash 腳本來將文件數量限制為 50000 個。我已經編寫了程式碼,但它沒有按預期工作。它刪除了所有文件,而不僅僅是舊文件。我打算刪除最後一個元素,直到檔案數量低於限制。有沒有更簡單的方法來完成這個過程?
LIMIT=50000
NUMBER=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap" wc -l)
if [[ $NUMBER -gt $LIMIT ]] #if number greater than limit
then
FILES=$(find /mnt/capture/PPO/ -maxdepth 1 -name "*.pcap")
for f in "${FILES[@]}"
do
rm $FILES[$NUMBER-$f]
done
#delete the originals
fi
答案1
我認為你的 FILES 變數是錯的。它會找到所有文件,而不僅僅是最舊的文件。你可以使用這樣的東西:
find /mnt/capture/PPO/ -maxdepth 1 -type f -name "*.pcap" -print0 | xargs -0 ls -lt | tail -5 | awk '{print $9}'
這會找到目錄中最舊的 5 個檔案。然後您可以根據需要更改該數字。