일반적으로 와일드카드 확장에는 도트 파일이 포함되지 않습니다.
% echo *
Applications Desktop Documents Downloads Library Movies Music Pictures Public bin
도트 파일을 명시적으로 요청하면 다음과 같은 결과를 얻습니다.
% echo * .*
Applications Desktop Documents Downloads Library Movies Music Pictures Public bin . .. .CFUserTextEncoding .DS_Store .Trash .adobe .bash_history .cups .gitconfig .gnupg .history .lesshst .netbeans .scanview.cfg .sqlite_history .ssh .swt .systemmodeler .tcshrc .viminfo
하지만 나는반품예를 들어 디렉토리의 각 항목 크기를 원하는 위치 로 전달하려는 경우에는 이러한 .
항목 ..
을 원하지 않습니다. 현재 디렉토리의 내용과 du -s
합계 없이 현재 디렉토리의 .
모든 내용을 제공할 수 있는 패턴이 있습니까 ..
?
저는 tcsh를 사용합니다.
("이 질문에는 이미 답변이 있을 수 있습니다:"에 관해 위에서 참고하시기 바랍니다. 아니요, 해당 답변은 bash에만 적용되므로 이 질문에는 답변이 없습니다.)
답변1
tcsh
버전 6.17.01 이상의 경우 :
set globdot
du -s -- *
노인들과 함께:
du -s -- * .[^.]* ..?*
(흥미롭게도 이는 POSIX 쉘과 달리 (및 에뮬레이션 ( 옵션)) * .[!.]* ..?*
에서 파일과 일치하지 않는 패턴이 자체가 아닌 null로 확장되기 때문에 POSIX 대응( )보다 낫습니다 .)tcsh
zsh
csh
cshnullglob
기준을 사용하여 찾기:
find . ! -name . -prune -exec du -s {} +
GNU에는 디렉토리 디스크 사용량이 보고되는 깊이를 제한하는 옵션이 du
있습니다 .-d
du -ad1
답변2
ls -A 명령을 사용하여 등록을 비활성화할 수 있습니다. 및..내부 명령 대체:
echo "`ls -A`"
답변3
나는 보통 다음을 사용합니다:
du -ks * .[^.]*
이 접근 방식은 불일치와 일치 .
하지 않으며 이식성이 뛰어납니다...
답변4
셸에 의존하기 때문에 간단한 일반적인 솔루션은 없습니다.
tcsh 또는 bash의 경우:
echo .[^.]*
ksh의 경우:
echo .*
단, Nykakin(..로 시작하는 파일)의 경우에는 실패합니다.
보다 일반적인 답변을 얻으려면 "grep" 또는 "find"를 사용하세요. 예:
ls -a|grep '^\.\(..\|[^\.]\)'
이것은 내가 알고 있는 모든 쉘에서 작동하지만 Nykakin의 쉘에서는 작동하지 않습니다. 다른 솔루션이 실패할 수 있는 다음과 같은 특별한 경우에도 적용됩니다.
.x
.x.
..x.
즉, 점으로 시작하고 그 뒤에 최소 2개의 문자 또는 점이 아닌 문자가 옵니다.