모든 숨겨진 파일을 어떻게 구해야합니까?


22

chown디렉토리의 모든 숨겨진 파일에 대해 몇 가지 작업 (예 :)을 수행하고 싶습니다 .

나는이 것을 알고 .*있다 되지 는 또한 현재 찾을 수 있기 때문에 좋은 아이디어가 .부모 ..디렉토리를 (나는 알고 rm에 작동 실패 .하고 ..있지만 포함한 다른 명령 chown하고 chmod, 행복하게 적용됩니다)

그러나 모든 숨겨진 파일의 이름이 다릅니다!

제외하면서 어떻게 모든 숨김 파일을 glob에해야 .하고 ..?

답변:


20

다음 extglob패턴을 사용할 수 있습니다 .

.@(!(.|))
  • ..처음 에는 리터럴과 일치

  • @()A는 extglob우리가 그 안에 하나 개의 패턴을 가지고 패턴, 내부의 패턴 중 하나와 일치합니다, 그를 선택합니다

  • !(.|)는 다른 extglob패턴 (중첩)이며, 하나도 없거나없는 파일과 일치합니다 .. 우리가 일치하는 것처럼 .이미 시작,이 모든 패턴은 모든 파일로 시작하는 일치 .를 제외 .하고 ...

extglobbashUbuntu 에서 대화식 세션에서 기본적으로 활성화됩니다 . 그렇지 않은 경우 먼저 활성화하십시오.

shopt -s extglob

예:

$ echo .@(!(.|))
.bar .foo .spam

이것은 분명히 내가 알아야 할 멋진 일입니다! 가르쳐 주셔서 감사합니다
Zanna

내가 :) 도움이 될 수 @Zanna 다행
heemayl

2
의 목적은 무엇입니까 @()? 단순 .!(.|)하게 작동하는 것 같습니다.
Kyle Strand

1
나는 이것이 오래된 것을 알고 있지만 @KyleStrand와 같은 질문이 있습니다. 내 테스트 !(.|)에서 동일하게 작동합니다. @()이 맥락에서 어떤 목적 이 있습니까?
Paddy Landau

뱅 캐릭터는 부정입니까? 언급되지 않았고 설명을 읽으면 패턴이 도트와 더블 도트와 일치한다는 인상을 얻지 만 시작 점과 일치하는 파일을 명확하게 설명합니다 (두 개를 제외하고).
사용자 불명

20
 GLOBIGNORE=".:.."

를 숨길 수 있습니다. 및 .. 디렉토리. 이것은 또한 설정 dotglob옵션 : *모두 숨겨지고 숨겨지지 않은 파일과 일치합니다.

당신은 또한 할 수 있습니다

shopt -s dotglob

질 :)


9

find여기서 명령을 사용할 수 있습니다 . 예를 들어

find -type f -name ".*" -exec chmod 775 {} \;

숨겨진 파일을 찾고 권한을 변경합니다


@gerrit의 주석을 포함하도록 편집하십시오.

find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \;

재귀 적으로 검색하는 대신 검색 디렉토리를 현재 디렉토리로 제한합니다.


4
-maxdepth 1질문의 동작과 다른 답변에 더 가깝게 일치하도록 여기에 여기 를 추가 할 수 있습니다 .
gerrit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.