![폴더의 파일 수를 제한보다 적게 유지하는 방법](https://rvso.com/image/1395385/%ED%8F%B4%EB%8D%94%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%88%98%EB%A5%BC%20%EC%A0%9C%ED%95%9C%EB%B3%B4%EB%8B%A4%20%EC%A0%81%EA%B2%8C%20%EC%9C%A0%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
파일 수를 50000개 제한으로 제한하는 bash 스크립트를 만들려고 합니다. 파일 수가 한도를 초과하면 이전 파일을 계속 삭제할 수 있도록 crontab에서 5분마다 bash 스크립트를 실행하고 싶습니다. . 코드를 작성했지만 의도한 대로 작동하지 않습니다. 오래된 파일만이 아닌 모든 파일을 삭제했습니다. 파일 수가 제한 이하가 될 때까지 마지막 요소를 삭제하려고 했습니다. 이 프로세스를 수행하는 더 쉬운 방법이 있습니까?
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개의 파일을 찾습니다. 그런 다음 필요에 따라 해당 번호를 변경할 수 있습니다.