답변:
다음 extglob패턴을 사용할 수 있습니다 .
.@(!(.|))
..처음 에는 리터럴과 일치
@()A는 extglob우리가 그 안에 하나 개의 패턴을 가지고 패턴, 내부의 패턴 중 하나와 일치합니다, 그를 선택합니다
!(.|)는 다른 extglob패턴 (중첩)이며, 하나도 없거나없는 파일과 일치합니다 .. 우리가 일치하는 것처럼 .이미 시작,이 모든 패턴은 모든 파일로 시작하는 일치 .를 제외 .하고 ...
extglobbashUbuntu 에서 대화식 세션에서 기본적으로 활성화됩니다 . 그렇지 않은 경우 먼저 활성화하십시오.
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질문의 동작과 다른 답변에 더 가깝게 일치하도록 여기에 여기 를 추가 할 수 있습니다 .