모두 제거하되 모든 하위 디렉터리의 최신 백업 파일 하나를 유지하는 스크립트

모두 제거하되 모든 하위 디렉터리의 최신 백업 파일 하나를 유지하는 스크립트

다음 스크립트는 단일 폴더에서 작동하지만 모든 하위 디렉터리를 반복하고 싶습니다.

ls /home/user/Desktop/cron_database_hourly/*/*_[012][0-9]*.zip | head -n -1 | \
   while read -r f; do rm "$f"; done

답변1

아마도 (테스트되지 않은) 다음과 같은 것으로 벗어날 수 있습니다.

for each in `find -type d /home/usr/Desktop/cron_database/hourly`
do
   ls -t $each/_[012][0-9]*.zip | head -n -1 | \ while read -r f; 
       do 
           rm "$f" 
      done
done

"for Each" 루프는 모든 디렉토리 목록을 찾고, ls에 "-t"를 추가하면 가장 최근 항목부터 날짜 순서로 정렬됩니다.

관련 정보