programing tip

크기가 0 인 Linux 삭제 파일

itbloger 2020. 6. 12. 21:48
반응형

크기가 0 인 Linux 삭제 파일


이 질문에는 이미 답변이 있습니다.

크기가 0 인 경우 리눅스에서 특정 파일을 어떻게 삭제합니까? 추가 스크립트없이 crontab에서이 파일을 실행하고 싶습니다.

l filename.file | grep 5th-tab | not eq 0 | rm

이 같은?


그러면 크기가 0 인 디렉토리 (및 아래)의 모든 파일이 삭제됩니다.

find /tmp -size  0 -print0 |xargs -0 rm --

당신이 특정 파일을 원한다면;

if [ ! -s /tmp/foo ] ; then
  rm /tmp/foo
fi

find 를 사용하고 싶습니다 :

 find . -size 0 -delete

현재 디렉토리 및 서브 디렉토리에서 빈 파일을 검색하고 삭제하려면 다음을 수행하십시오.

find . -type f -empty -delete

-type f 디렉토리도 크기가 0으로 표시되므로 필요합니다.


.(현재 디렉토리)은 시작 검색 디렉토리입니다. GNU find (예 : Mac OS가 아님)가있는 경우이 경우 생략 할 수 있습니다.

find -type f -empty -delete

에서 GNU의 find문서 :

검색 할 파일이 지정되지 않으면 현재 디렉토리 (.)가 사용됩니다.


명령 find사용하여 이를 수행 할 수 있습니다 . -type f사용하여 파일을 일치시키고을 사용하여 빈 파일을 일치 시킬 수 있습니다 -size 0. 그런 다음로 일치하는 항목을 삭제할 수 있습니다 -delete.

find . -type f -size 0 -delete

이것은 일반 BSD에서 작동하므로 모든 맛과 보편적으로 호환되어야합니다. below.eg에서 pwd( .)

find . -size 0 |  xargs rm

Linux에서 stat (1) 명령은 find (1)이 필요하지 않은 경우에 유용합니다.

(( $(stat -c %s "$filename") )) || rm "$filename"

여기서 stat 명령을 사용하면 파일 크기 만 얻을 수 있습니다 -c %s(다른 형식의 매뉴얼 페이지 참조). stat 프로그램을 실행하고 출력을 캡처하고 $( )있습니다. 이 출력은 숫자로 표시되며 외부 (( ))입니다. 크기가 0이면 FALSE이므로 OR의 두 번째 부분이 실행됩니다. 0이 아닌 (빈 파일이 아닌) 파일은 TRUE이므로 rm이 실행되지 않습니다.


비 재귀 삭제의 경우 (du 및 awk 사용) :

rm `du * | awk '$1 == "0" {print $2}'`

find . -type f -empty -exec rm -f {} \;

참고 URL : https://stackoverflow.com/questions/5475905/linux-delete-file-with-size-0

반응형