단일 찾기 명령을 사용하여 폴더 1개를 제외한 모든 하위 디렉터리의 권한을 어떻게 변경할 수 있습니까?

단일 찾기 명령을 사용하여 폴더 1개를 제외한 모든 하위 디렉터리의 권한을 어떻게 변경할 수 있습니까?

폴더 1개를 제외한 모든 하위 폴더의 폴더 및 파일 권한을 변경해야 합니다. 현재 작동시키기 위해 몇 가지 find/exec 명령을 실행하고 있습니다.

e.g. find /mystuff/temp/videos -type d -exec chmod 777 {} \;

폴더 구조는 다음과 같습니다(필요한 권한이 있는 경우).

mystuff
    -> folder1 (ignored)
        -> subfolder1 (permissions changed)
    -> folder2 (permissions changed)
    -> folder3 (permissions changed)

가능합니까? 그렇다면 어떤 find 명령을 사용해야 합니까?

답변1

노력하다:

find /mystuff/temp/videos -type d ! -name 'folder1' -exec chmod 777 {} +

777 권한을 설정하면 안 됩니다. 이는 큰 보안 허점입니다.

답변2

-wholename( )를 사용하여 !테스트를 추가하면 디렉터리를 삭제할 수 있습니다 . 예를 들어:

find /mystuff/temp/videos ! -wholename 'mystuff/folder' -type d -exec chmod 777 {} \;

매뉴얼 페이지에서:

   -wholename pattern
      File name matches shell pattern pattern.  The metacharacters  do
      not treat '/' or '.' specially; so, for example,
        find . -wholename './sr*sc'
      will  print an entry for a directory called './src/misc' (if one
      exists).

*쉘에서 패턴을 보호하기 위해 와일드카드( )를 사용하는 경우 패턴을 따옴표로 묶어야 합니다.

관련 정보