폴더의 파일 수를 제한보다 적게 유지하는 방법

폴더의 파일 수를 제한보다 적게 유지하는 방법

파일 수를 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개의 파일을 찾습니다. 그런 다음 필요에 따라 해당 번호를 변경할 수 있습니다.

관련 정보