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


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.