*를 디렉토리의 숨겨진 파일과 일치시키는 방법

*를 디렉토리의 숨겨진 파일과 일치시키는 방법

특정 디렉터리의 숨겨진 파일을 일치시키는 방법

예를 들어

다음 명령을 내리면 숨김 파일 결과가 나오지 않습니다.

 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*/.*/

관련 정보