답변:
버팀대 확장을 활용하십시오.
du -b maybehere*/{*,.[^.],.??*}
또는 대안 적으로
du -b maybehere*/{,.[^.],..?}*
이것의 논리는 분명하지 않을 수 있으므로 여기에 설명이 있습니다.
*
숨겨지지 않은 모든 파일과 일치.[^.]
단일 점으로 시작하고 그 뒤에 점이 아닌 파일을 찾습니다. 첫 번째 형식의 파일 이름은 2 자입니다..??*
3 자 이상의 숨겨진 파일과 일치..?*
위와 같이 두 번째 문자는 점이어야합니다요점은 현재 및 상위 디렉토리 ( .
및 ..
)에 대한 하드 링크를 제외 하지만 각 일반 파일을 한 번만 계산하는 방식으로 모든 일반 파일을 포함시키는 것입니다!
예를 들어 가장 간단한 방법은
du -b maybehere*/{.,}*
즉, 목록에 점 .
과 "아무것도 없음"(사이에 ,
없고 닫힘 없음 }
)이 있으므로 모든 숨겨진 파일 (점에서 시작)과 숨겨지지 않은 모든 파일 ( "아무것"에서 시작)이 일치한다는 것을 의미합니다. 문제는 이것 또한 .
and과 일치 할 것이고 ..
, 이것은 아마도 당신이 원하는 것이 아닐 것이므로, 우리는 어떻게 든 그것을 배제해야합니다.
버팀대 확장에 대한 최종 단어.
중괄호 확장 은 더 적은 문자를 사용하여 명령 줄에 더 많은 파일 / 문자열 / 무엇을 포함시킬 수있는 메커니즘입니다. 구문은 {word1,word2,...}
, 즉 쉼표로 구분 된 문자열 목록으로 시작 {
하고 끝납니다 }
. bash
manual은 매우 기본적이고 동시에 가장 일반적인 사용 예를 제공합니다.
$ echo a{b,c,d}e
abe ace ade
{ }
나는 전혀 모른다는 :( 당신이 나에게 그것에 대해 더 많은 정보를 얻을 수있는 방향을 제공 할 수 있습니다
man bash
"Brace Expansion"장을보십시오.
.??*
일치에 실패 .a
, .b
... .[^.]*
일치하지 ..foo
.
.foo
모두 일치 .[^.]*
하고 .??*
. 당신은 원합니다 {.[!.],..?,}*
.
이미 GNU 특정 구문 ( -b
)을 사용하고 있기 때문에 :
du -abd1 maybehere*/
그렇게 du
하면 maybehere*
디렉토리 의 파일을 나열하고 도트 파일을 제외하지 않습니다. -d1
디스크 사용량보고를 한 수준 아래로 제한합니다 (를 사용하여 비 디렉토리 포함 -a
).
그렇지 않으면, 글로브가 숨겨진 파일 ( .
및 제외 ..
) 을 포함하기 위해 각 쉘에는 고유 한 구문이 있습니다.
zsh
:
du -b maybehere*/*(D)
ksh93
:
(FIGNORE='@(.|..)'; du -b maybehere*/*)
bash
:
(shopt -s dotglob; du -b maybehere*/*)
tcsh
:
(set globdot; du -b maybehere*/*)
yash
:
(set -o dot-glob; du -b maybehere*/*)
그러나 포함되어 .
있고 ..
그 결과를 포함하는 시스템에서는 readdir()
사용이 거의 불가능합니다.
숨겨진 디렉토리를 나열하거나 숨겨진 디렉토리에서 작업하려면 Costas가 말한 것처럼 사용할 수 있습니다
du -b maybehere*/.*
이를 통해 숨겨진 파일 및 디렉토리에서 작업 할 수 있습니다. 숨겨진 디렉토리 만 원한다면 다음을 사용하여 지정할 수 있습니다
du -b maybehere*/.*/
maybehere*/.*
와 숨겨진 파일을 사용하지 않고 maybehere*/*
다른 파일을 숨기려고합니다.
du -b
은 숨겨진 것과 숨겨지지 않은 것을 모두 선택합니다.
maybehere*/.*
모두를 위해 위의 내용을 추가하십시오