파일 유형 조건에 따라 디렉토리 및 chmodding을 반복적으로 탐색하는 쉘 스크립트

파일 유형 조건에 따라 디렉토리 및 chmodding을 반복적으로 탐색하는 쉘 스크립트

누구든지 전체 디렉토리 구조(현재 작업 디렉토리에서 시작하거나 시작할 위치에 대한 필수 매개변수 제공)를 재귀적으로 탐색할 수 있는 쉘 스크립트 작성을 위한 코드나 튜토리얼을 알려줄 수 있습니까?

  1. 항목이 디렉터리인지 여부를 결정하고, 그렇다면 chmod 755디렉터리인지, 아니면...
  2. 항목이 파일(디렉토리가 아님)인지 여부와 chmod 644그것이 무엇인지 결정합니다.

Ubuntu, Debian, RHEL 기반 등과의 호환성을 찾고 있으므로 특정 언어로 태그하지 않겠습니다. 나는 Bash에서 이 작업을 수행하고 싶었지만 ZSH 스크립트가 있으면 그것도 작동할 것입니다.

답변1

나는 이 명령줄에 익숙합니다(현재 작업 디렉터리에서 시작하여 반복됩니다).

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +

설명하다:

find .                    # starting in curdir find   
-type d                   # any directory
-exec chmod 0755 '{}'     # and chmod it to 755
+                         # (variant of -exec look find man page)
-or                       # or
-type f                   # any file
-exec chmod 0644 '{}'     # and chmod it to 644
+                         # (as above)

답변2

간단한 대답:

chmod -R a+rX .

+X(대문자 X 참고)는 사용자에게 실행 권한이 이미 있는 경우 실행 권한이 부여됨을 의미합니다. 디렉터리 트리에 소유자에 대한 올바른 권한이 있고 모든 사람이 해당 트리에 액세스할 수 있도록 하려면 이것이 올바른 명령입니다. 디렉터리를 전역적으로 실행 가능하게 만들 뿐만 아니라 파일도 실행 가능하게 만듭니다.

쓰기 권한을 소유자에게만 재설정하고 setuid/setgid 비트를 지우려면 다음을 수행하십시오.

chmod -R a-ws,u+w,a+rX .

파일을 실행 가능하게 만들고 싶지 않으면 두 줄의 코드와 함께 zsh를 사용해야 합니다.

chmod 755 **/*(/)
chmod 644 **/*(.)

관련 정보