및 ..이 아닌 모든 도트 파일을 반환하도록 매개변수를 지정하려면 어떻게 해야 합니까?

및 ..이 아닌 모든 도트 파일을 반환하도록 매개변수를 지정하려면 어떻게 해야 합니까?

일반적으로 와일드카드 확장에는 도트 파일이 포함되지 않습니다.

% 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 대응( )보다 낫습니다 .)tcshzshcshcshnullglob

기준을 사용하여 찾기:

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개의 문자 또는 점이 아닌 문자가 옵니다.

관련 정보