디렉토리에서만 재귀 chmod를 수행하려면 어떻게해야합니까?


31

Centos 4의 트리에 대한 권한을 변경하여 디렉토리에서 모든 디렉토리에 대한 실행 권한을 반복적으로 추가하고 싶습니다. 일반 chmod를 사용하면 디렉토리 이외의 파일도 수정됩니다.

chmod -R o+x /my/path/here

디렉토리에만 영향을 줄 수있는 방법은 무엇입니까?

답변:


48

실행 find-type d( 디렉토리 와) -exec수행하는 주요 chmod폴더에 만 :

find /your/path/here -type d -exec chmod o+x {} \;

원하는 객체에서만 수행되도록하려면 find /your/path/here -type d먼저 실행하면됩니다 . 찾은 디렉토리를 인쇄합니다.


{} \; 합니까?
Srekel


17

Wikipedia의 명령 행 예제-chmod 를 참조하십시오 .

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

Daniel이 추가 한 것처럼 : 이것은 귀하의 경우에 작동해야합니다.

chmod -R o+X directory

이는 디렉토리 내 파일의 현재 권한에 영향을 미칩니다.
scriptmonster

@scriptmonster이 줄에는 인용 된 줄이 잘못되었지만 chmod -R o+X directoryOP에서는 작동합니다.
Daniel Beck

1
의 차이에 대해 궁금 사람들을 위해, 나처럼, 그것은 X는 것입니다 또한 이미 설정 비트가 이미 실행 권한 적어도 가진 파일 (중 사용자, 그룹 또는 다른)에 실행 권한을 적용합니다. 일반적으로 허용되는 답변이 더 좋습니다.
ixe013

1
find /home/mydir -type d | xargs chmod ugo+rx

이것은 위의 find -exec가 아닌 CentOS6에서 작동합니다. 기본적으로 디렉토리 목록을 xargs 명령으로 파이프하여 chmod로 보냅니다. 그런 다음 chmod는 디렉토리에서 범용 읽기 및 실행 (검색)을 설정합니다. 가정에서 사용하는 모든 사용자에 대해 이렇게하려면 sudo :

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.