희소 파일을 찾는 방법에 대한 유용한 답변을 바탕으로
https://unix.stackexchange.com/a/573434/426237
나는 희소 파일(또는 디스크에서 크기가 정확히 0인 파일)을 삭제하기 위해 이 명령을 생각해냈습니다.
find *.* -type f -printf "%S\t%p\n" | gawk '$1 == 0 {print $2}' | xargs rm
불행하게도 파일 이름에 공백이 포함되어 있으면 문제가 발생합니다. 이 경우 이름은 여러 열로 구분됩니다. 공백이 포함된 경우에도 gawk가 전체 파일 이름을 출력하도록 이 파이프 명령을 수정할 수 있습니까? 아니면 다른 경로를 이용해야 하나요?
[컨텍스트: 저는 Windows에서 bash 셸(Git bash)을 사용하여 디스크에 파일이 없는 동기화되지 않은 Dropbox 파일을 찾아 삭제하고 있습니다. ]
답변1
find | gawk | xargs
어떤 이유로 든 파이프가 정말로 필요한 경우 다음을 시도해 보십시오(테스트되지 않음).
find . -type f -printf '%S %p\0' |
gawk 'BEGIN{RS=ORS="\0"} $1 == 0 {sub(/^[^ ]+ /,""); print}' |
xargs -0 echo
테스트 완료 후 echo
로 변경하세요 .rm