답변:
다음 extglob
패턴을 사용할 수 있습니다 .
.@(!(.|))
.
.
처음 에는 리터럴과 일치
@()
A는 extglob
우리가 그 안에 하나 개의 패턴을 가지고 패턴, 내부의 패턴 중 하나와 일치합니다, 그를 선택합니다
!(.|)
는 다른 extglob
패턴 (중첩)이며, 하나도 없거나없는 파일과 일치합니다 .
. 우리가 일치하는 것처럼 .
이미 시작,이 모든 패턴은 모든 파일로 시작하는 일치 .
를 제외 .
하고 ..
.
extglob
bash
Ubuntu 에서 대화식 세션에서 기본적으로 활성화됩니다 . 그렇지 않은 경우 먼저 활성화하십시오.
shopt -s extglob
예:
$ echo .@(!(.|))
.bar .foo .spam
@()
? 단순 .!(.|)
하게 작동하는 것 같습니다.
!(.|)
에서 동일하게 작동합니다. @()
이 맥락에서 어떤 목적 이 있습니까?
find
여기서 명령을 사용할 수 있습니다 . 예를 들어
find -type f -name ".*" -exec chmod 775 {} \;
숨겨진 파일을 찾고 권한을 변경합니다
@gerrit의 주석을 포함하도록 편집하십시오.
find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \;
재귀 적으로 검색하는 대신 검색 디렉토리를 현재 디렉토리로 제한합니다.
-maxdepth 1
질문의 동작과 다른 답변에 더 가깝게 일치하도록 여기에 여기 를 추가 할 수 있습니다 .