모든 하위 폴더에서 특정 크기보다 작은 모든 파일을 어떻게 삭제합니까?


88

작은 tif 파일 (160kb 미만)을 포함하는 많은 하위 폴더가있는 큰 폴더가 있는데, 큰 pdf 파일과 함께 큰 pdf 파일로 병합되었습니다.

더 큰 파일 (tif 또는 pdf)을 삭제하지 않고 디렉토리 구조를 유지하지 않고 모든 작은 tif 파일을 삭제하고 싶습니다. 명령 행을 사용하여 Linux에서 어떻게해야합니까?

답변:


155
find . -name "*.tif" -type 'f' -size -160k -delete

-delete올바른 파일이 있는지 확인하려면 먼저 명령을 실행하십시오 .

-이전에 유의하십시오 160k. 그냥 160k정확히 160킬로바이트을 의미한다. -160k160 킬로바이트보다 작은 것을 의미합니다. +160k160 킬로바이트보다 큰 것을 의미합니다.

-type 'f'힘 파일 만 행동 할 수있는 명령은 디렉토리를 건너 뜁니다. 경로에 패턴과 일치하는 이름을 가진 폴더가 포함되어 있으면 오류가 발생하지 않습니다 *.tif.

160KB 대신 160 바이트로 바이트 단위로 크기를 필터링하려면 다음과 같이 작성해야합니다 160c. 방금 쓰면 160160 * 512 바이트로 해석됩니다. 이것은 POSIX의 이상한 요구 사항입니다. 자세한 내용은 여기를 참조하십시오 : https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


우분투 매뉴얼 페이지는 이것을 언급하는 것 같습니다. "TESTS"섹션 바로 아래 : 숫자 인수는 n보다 큰 경우 + n, n보다 작은 경우 -n, 정확히 n의 경우 n으로 지정할 수 있습니다.
— jdg

1
감사. 정보가 맨 페이지의 다른 곳에있을 수는 없습니다.
— lesmana

이 명령도 재귀 적으로 작동하는 것이 좋습니다. 내 유스 케이스는 12kB 아래에서 .txt 파일을 삭제하는 것입니다.
— 일요일

sudo가 필요하지 않습니까?
— Jean-François Gagnon

11
바이트 단위 크기의 경우 50b 또는 50이 아닌 50c를 지정하십시오!
— Evengard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.