ls를 사용하여 비어 있지 않은 파일 만 나열하려면 어떻게해야합니까? (크기> 0) 모든 파일을 나열 (사용

ls리눅스를 사용하여 비어 있지 않은 (크기> 0) 모든 파일을 나열 (사용 ) 할 수 있습니까?



답변

find dirname -not -empty -lsGNU find를 가정하고을 사용 합니다.


답변

이것은 ls가 충분히 강력하지 않은 것을 찾기 위한 직업입니다 .

find -maxdepth 1 -size +0 -print

-maxdepth 1 -현재 디렉토리 만 검색하고, 모든 하위 디렉토리를 찾기 위해 제거하거나, 2, 3 또는 그 이상의 레벨로 내려가도록 숫자를 변경하도록합니다.

-size +0이것은 0바이트 보다 큰 크기의 파일을 찾도록 알려줍니다 . 0원하는 크기로 변경할 수 있습니다.

-print 찾은 파일의 전체 경로를 인쇄하도록 find에 지시합니다.

편집 :
늦은 추가 : 아마도 -type f위 의 스위치를 추가해야합니다 . 이렇게하면 찾기는 파일 만 찾도록 지시합니다. 아래 주석에서 언급했듯이 -print스위치는 실제로 필요하지 않습니다.


답변

find dirname -type f ! -empty


답변

ls -l | awk '{if ($5 != 0) print $9}'

를 사용하려는 경우 ls약간의 도움이 필요합니다 awk.


답변

LS는 파일을 필터링 할 수있는 옵션이 거의 없습니다. 그것은 그 일이 아닙니다. 파일 필터링은 간단한 경우 (글 로빙을 통해)의 쉘 작업이고 복잡한 경우를 찾는 작업입니다.

zsh에서는 Lglobbing 한정자가 크기가> 0 인 파일 만 유지하도록 할 수 있습니다 ( .한정자는 일반 파일로 제한됨).

ls *(.L+0)

다른 쉘 사용자는 find를 사용해야합니다. GNU find (대부분 Linux에서 발견) :

find -maxdepth 1 -type f ! -empty -exec ls {} +

POSIX 호환 방법은 다음과 같습니다.

find . -type f -size +0c -exec ls {} + -o -name . -o -prune

경우 ls당신이 크기를 기준으로 정렬 할 수 단지 예 아니었고 당신은 단순히 육안 검사를하려는 : ls -S.


답변

 $ find /* -type f ! -size 0

디렉토리가 아닌 비어 있지 않은 파일을 모두 원한다면 더 잘 작동합니다.


답변

배쉬 4.0+

shopt -s globstar
shopt -s nullglob
for file in **/*; do  test -f "$file" && [[ -s "$file" ]] && echo "$file"; done