답변:
find dirname -not -empty -ls
GNU find를 가정하고을 사용 합니다.
ls
하고 당신이 사용 했기 때문에 find
;) 나는
이것은 ls가 충분히 강력하지 않은 것을 찾기 위한 직업입니다 .
find -maxdepth 1 -size +0 -print
-maxdepth 1
-현재 디렉토리 만 검색하고, 모든 하위 디렉토리를 찾기 위해 제거하거나, 2, 3 또는 그 이상의 레벨로 내려가도록 숫자를 변경하도록합니다.
-size +0
이것은 0
바이트 보다 큰 크기의 파일을 찾도록 알려줍니다 . 0
원하는 크기로 변경할 수 있습니다.
-print
찾은 파일의 전체 경로를 인쇄하도록 find에 지시합니다.
편집 :
늦은 추가 : 아마도 -type f
위 의 스위치를 추가해야합니다 . 이렇게하면 찾기는 파일 만 찾도록 지시합니다. 아래 주석에서 언급했듯이 -print
스위치는 실제로 필요하지 않습니다.
-maxdepth 1
먼저 배치 해야 -size +0
합니다. 또한 -print
기본 동작이므로 필요하지 않습니다.
find
유효한 옵션이 무엇이고 어디로 갈 수 있는지 에 따라 구현이 다양합니다. GNU find
(끔찍하게 흔함) 는 만약 당신이 -size
앞에 두면 경고 를 낼 것-maxdepth
입니다.
LS는 파일을 필터링 할 수있는 옵션이 거의 없습니다. 그것은 그 일이 아닙니다. 파일 필터링은 간단한 경우 (글 로빙을 통해)의 쉘 작업이고 복잡한 경우를 찾는 작업입니다.
zsh에서는 L
globbing 한정자가 크기가> 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
.