목록을 방지하고 결과를 표시하는 find
방법 이 있습니까 ? 나는 이 결과를 출력에서 보는 것에 전혀 신경 쓰지 않으며 결과를 정확하게 계산하기 위해 출력을 효과적으로 파이프하는 것을 방해합니다.ls -l
.
..
wc -l
중요한 경우에는 에서 일하고 있습니다 zsh
.
답변1
의 경우 대신 ls
사용하십시오 .-A
-a
에서 man ls
:
-A, --almost-all
do not list implied . and ..
답변2
와 함께 zsh
:
count() echo $#
count * # non-hidden files (all types)
count *(D) # files (all types)
count **/*(D) # files recursively (all types)
count **/*(D/) # directories only (recursively)
( globbing 한정자 와 마찬가지로 glob은 활성화된 경우에도 zsh
포함되지 않습니다 .
. )..
dotglob
(D)
파일이 없을 때 오류 메시지를 방지하려면 N
globbing 한정자를 추가하세요.
count *(ND)
일치하는 항목이 없으면 glob이 아무것도 없는 상태(인수 없음, 빈 인수 아님)로 확장됩니다.
개행 문자는 파일 이름의 다른 문자와 마찬가지로 유효한 문자이므로 출력 ls
또는 find
to를 파이핑하는 것은 wc -l
올바르지 않습니다.
/
POSIXly에서는 개행 문자 대신 문자 수를 셀 수 있습니다 .
find . ! -name . -prune -print | grep -c /
또는 다음 트릭을 사용하여 재귀적으로:
find .//. ! -name . -prune -print | grep -c //
답변3
도트 디렉토리를 제외 하려면 find
다음을 사용할 수 있습니다.
$ find . ! -path . -type d
예
$ find . ! -path . -type d | head -5
./.vim_SO
./.vim_SO/bundle
./.vim_SO/bundle/vim-fugitive
./.vim_SO/bundle/vim-fugitive/plugin
./.vim_SO/bundle/vim-fugitive/doc
...