특정 디렉터리의 숨겨진 파일을 일치시키는 방법
예를 들어
다음 명령을 내리면 숨김 파일 결과가 나오지 않습니다.
du -b maybehere*/*
다음을 사용하는 대신 단일 명령을 사용하여 이를 달성하려면 어떻게 해야 합니까?
du -b maybehere*/.* maybehere*/*
여기에는 두 번 입력해야 하기 때문입니다.
답변1
버팀대 확장 사용:
du -b maybehere*/{*,.[^.],.??*}
또는 대안적으로
du -b maybehere*/{,.[^.],..?}*
이에 대한 논리는 명확하지 않을 수 있으므로 설명은 다음과 같습니다.
*
숨겨지지 않은 모든 파일과 일치.[^.]
이름이 단일 점으로 시작하고 그 뒤에 점이 아닌 파일 이름이 오는 파일과 일치합니다. 첫 번째 형식에서는 2자 파일 이름만 사용됩니다..??*
길이가 3자 이상인 숨겨진 파일과 일치합니다...?*
위와 동일하지만 두 번째 문자는 점이어야 합니다.
요점은 현재 디렉터리와 상위 디렉터리의 하드 링크( .
및 )를 제외하는 것입니다...
각 파일이 한 번만 계산되는 방식으로 모든 일반 파일을 포함하십시오!
예를 들어, 가장 간단한 것은 다음과 같습니다.
du -b maybehere*/{.,}*
이는 목록에 점 .
과 "없음"( ,
과 끝 사이에 아무것도 없음 }
)이 포함되어 있으므로 모든 숨겨진 파일(점으로 시작)과 숨기지 않은 모든 파일("없음"으로 시작)이 일치함을 의미합니다. 문제는 이것이 또한 원하는 것과 일치하지 않을 가능성이 높기 때문에 어떻게든 제외해야 한다는 것입니다 .
...
버팀대 확장에 대한 마지막 말씀입니다.
지원 확장더 적은 수의 문자를 작성하여 명령줄에 더 많은 파일/문자열/무엇이든 포함할 수 있는 메커니즘입니다. 구문은 으로 시작 하고 끝나는 {word1,word2,...}
문자열의 쉼표로 구분된 목록이라는 것 입니다 . 매뉴얼은 매우 기본적이면서 동시에 매우 일반적인 사용 예를 제공합니다.{
}
bash
$ echo a{b,c,d}e
abe ace ade
답변2
이미 GNU 특정 구문( )을 사용하고 있으므로 -b
:
du -abd1 maybehere*/
이렇게 하면 du
디렉터리의 파일이 나열 됩니다 maybehere*
(점 파일은 제외되지 않음). -d1
디스크 사용량 보고를 다음 수준으로 제한합니다( 가 포함된 비디렉토리 포함 -a
).
그렇지 않으면 각 셸에는 숨겨진 파일이 포함된 glob에 대한 고유한 구문이 있습니다 ( .
및 제외)...
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()
답변3
다른 옵션을 사용할 수 있습니다.여기:
du -sm .[!.]* *
답변4
숨겨진 디렉토리를 나열하거나 작업하려는 경우 Costas가 말했듯이 다음을 사용할 수 있습니다.
du -b maybehere*/.*
이를 통해 숨겨진 파일과 디렉터리를 조작할 수 있습니다. 디렉토리를 숨기려면 다음을 지정할 수 있습니다.
du -b maybehere*/.*/