숨겨진 파일 또는 디렉토리를 포함하여 재귀 적으로 디렉토리를 숨기는 방법


37

재귀 플래그가있는 chown처럼 보이지 않는 숨겨진 디렉토리 또는 파일에서 작동하지 않습니다. 그것에 대한 간단한 해결 방법이 있습니까?

답변:


56

-R플래그가 작동한다고 확신 합니다. 어쨌든 항상 저에게 있습니다. 작동하지 않는 것과 명령 줄 사용 초기에 나를 트립 한 것은 *숨겨진 파일 / 디렉토리가있는 디렉토리에서 사용 하는 것입니다. 그렇게

$ chown -R /home/user/*

숨겨진 파일과 디렉토리를 수행하지 않습니다. 그러나 당신이 그것을 따르는 경우

$ chown -R /home/user/.[^.]*

당신은 모든 숨겨진 파일, 할 것이다 (하지만이 .나 ..같은 /home/user/.*할 것). 모든 것을 말했지만, 나는 기대할 것입니다

$ chown -R /home/user

모든 숨겨진 파일과 디렉토리를 내부에 가져 오려면 /home/user물론 디렉토리 자체의 권한도 변경되므로 의도하지 않은 것일 수 있습니다.


3
chown디렉토리에 대한 작업을 수행하면 디렉토리 자체에 대한 권한 및 모든 컨텐츠가 원하는대로 변경 될 수있는 부작용이 있습니다.
— wfaulk

A +는 저에게 매력처럼 작용했습니다.
— SuperFamousGuy

시도 chown nginx:nginx -R /path/to/.[^.]*하고 소유권을 .dot 숨김 파일로 변경했습니다. 전부는 아닙니다.
— Pathros

@wfaulk @Hamish Downer가 언급했듯이 모든 파일을 얻으려면 둘 다 수행 *하고 따라야 .[.^]*합니다.
— god_is_love

9

다음 명령이 작동해야한다고 생각합니다.

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-h는 참조 된 파일 대신 심볼릭 링크에 영향을줍니다 (symlink의 소유권을 변경할 수있는 시스템에서만 유용)
— R. van Twisk

8

"chown -R"은 작동하지만 find를 사용하는 방법이 있습니다.

 find /path/to/dir -exec chown USER {} \;

5
GNU find의 경우, 파일 / 디렉토리 당 하나의 포크 대신 chown하는 데 필요한 최소 수의 포크를 사용하므로 -exec의 종료 자로 +대신 사용 하는 ;것이 더 효율적입니다.
— stew

3

dotglob속성을 일시적으로 변경하여 확장 할 수 있습니다 . 파일을 저장 한 다음 되돌립니다.

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

더에서 dotglob찾을 수 있습니다 여기에



1

또한, 당신이 나와 같다면 아마도 현재 디렉토리에서 chown을 실행하고있을 것입니다. 나는 이것을 다음과 같이 실행하는 데 익숙했다 chown rails.rails -R *. 별표를 다음과 같이 점 (현재 디렉토리의 줄임말)으로 변경하면 chown rails.rails -R .모든 숨겨진 디렉토리가 나타납니다.


2
부작용으로 인해 현재 디렉토리 및 해당 디렉토리의 모든 컨텐츠에 대한 권한이 변경 될 수 있습니다.
— wfaulk

1

chown숨겨진 파일 및 디렉토리와 함께 작동합니다. 다음 예에서는의 모든 파일에 대한 사용자 및 그룹 소유권을 변경 합니다 ~/some/folder. 모든 파일이 모두 포함 숨겨진 파일 (예를 들어 .bashrc, .profile상기 등) 및 폴더 ~/some/folder수준 이하입니다. 특히의 소유권을 변경하고 싶지 않으므로 소유권 변경 사항에서 ~/some파일 ~/some/..을 제외합니다 .

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

이것은 나를 위해 일했다
— klor

0

현재 사용자의 현재 디렉토리 및 하위 디렉토리에있는 모든 파일을 숨기려면

find . -exec chown $(whoami) {} \;

또는 사용자가 제한된 권한으로 인해 일부 파일을 숨길 수없는 경우

sudo find . -exec chown $(logname) {} \;

-2

당신은 같은 것을 할 수 있습니다

for i in `ls -A`;do chown -R user:group $i;done

-A( 자본 A)는 그것을 제외 중요하다 '.' 그리고 '..'


현재 디렉토리의 파일 및 하위 디렉토리 만 변경되며 하위 레벨은 변경되지 않습니다. (OP가 원하는 것일 수도 있습니다.) 또한 파일 이름과 디렉토리 이름에 공백 (또는 탭)이있는 경우에도 깨집니다.
— wfaulk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.