2016-12-20 2 views
1

일부 폴더/파일 (재귀 적)을 사용자의 권한과 동일한 권한으로 만들 필요가 있습니다. 그래서 :chmod - 그룹/월드에 대한 사용자 권한 복제

  • 0755 -> 0777
  • 0644 ->

0666 어떻게 그렇게 할 수 있습니까? 아마도 내가 아는 작은 비밀 명령일까요?

쉬운 방법이 없다면 아마도 루프를 만들고 테스트/할당해야합니다. 궁극적으로 나는 단지 3 가지 처리해야합니다

폴더 777, 대부분의 파일 666 실행 777

답변

2

find 주어진 권한 집합을 가진 파일을 찾아 그들을 충당하기 위해 필요한 chmod 호출의 가장 작은 수를 실행하는 작업을 수행 할 수 있습니다 당신은 약간 루프를 필요합니까.

find . \ 
    '(' -perm -0700 -exec chmod 0777 '{}' + ')' -o \ 
    '(' -perm -0600 -exec chmod 0666 '{}' + ')' 
0

당신을 위해 수행 한 명령이 없습니다 있어야한다.

for file in $(find . -print) 
do 
    if [ -d $file -o -x $file ]; then 
    chmod 777 $file 
    else 
    chmod 666 $file 
    fi 
done 
+2

이것은 매우 버그가 많습니다. 공백이나 와일드 카드로 파일 이름이 어떻게되는지보십시오. 또한 http://shellcheck.net/을 통해 실행하고 인용 문제를 수정하십시오. –

+0

... 그리고'for file in $ (find. -print)'의 일반적인 관행은 [BashPitfalls # 1] (http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A)를 참조하십시오. mp3.29) 및 [DontReadLinesWithFor] (http://mywiki.wooledge.org/DontReadLinesWithFor)를 참조하십시오. –

+0

... 셸 스크립트에서'find'의 임의의 파일 이름을 안전하고 정확하게 처리하려면,'-exec' 액션을 사용하여 argv의 스크립트에 전달하거나 -print0 '를 사용하여 NUL으로 구분 된 스트림을 생성합니다. [BashFAQ # 1] (http://mywiki.wooledge.org/BashFAQ/001)에서'-print0'을 찾아 후자의 예제를 보거나 [UsingFind] (http : //)의 "Complex Actions"섹션을 검색하십시오. mywiki.wooledge.org/UsingFind)를 참조하십시오. –