![如何使資料夾中的檔案數量少於限制](https://rvso.com/image/1395385/%E5%A6%82%E4%BD%95%E4%BD%BF%E8%B3%87%E6%96%99%E5%A4%BE%E4%B8%AD%E7%9A%84%E6%AA%94%E6%A1%88%E6%95%B8%E9%87%8F%E5%B0%91%E6%96%BC%E9%99%90%E5%88%B6.png)
我正在嘗試創建一個 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 個檔案。然後您可以根據需要更改該數字。