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


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.