find 및 ls에서 . 및 .. 결과를 제외합니다.

find 및 ls에서 . 및 .. 결과를 제외합니다.

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)

( zshglob은 활성화된 경우에도 포함되지 .않습니다 ..(예: globbing 한정자 사용)).dotglob(D)

파일이 없을 때 오류 메시지를 방지하려면 Nglobbing 한정자를 추가하세요.

count *(ND)

일치하는 항목이 없으면 glob이 아무것도 확장되지 않습니다(인수 없음, 빈 인수 아님).

줄 바꿈은 파일 이름의 모든 문자만큼 유효하므로 출력 ls또는 findto를 파이핑하는 것은 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
...

관련 정보