775/664 이외의 권한을 가진 디렉터리 및 파일 찾기

775/664 이외의 권한을 가진 디렉터리 및 파일 찾기

웹사이트를 한 서버에서 다른 서버로 옮기고 있는데 Git은 파일 권한과 같은 메타데이터를 저장하지 않습니다. 각각 775/664가 아닌 디렉토리와 파일을 찾아야 합니다.

지금은 다음과 같이 잘 짜여진 설정을 사용하고 있습니다.

$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'

이것이 작동하는 동안 나는 그것이 다소 진부하다고 생각합니다. 이를 수행하는 더 좋은 방법이 있습니까? 정식 방법일까요, 아니면 그냥 해킹해야 합니까?

최신 Ubuntu 버전에서 실행되며 Bash에서 GNU 도구를 사용합니다.

답변1

사용-perm테스트 find바인딩-not:

find -type d -not -perm 775 -o -type f -not -perm 664
  • -perm 775와 정확히 동일한 권한을 일치시킵니다 775. -perm 664에서 동일한 작업을 수행합니다 664.
  • -not(부울 NOT)은 다음 테스트를 무효화하므로 현재와 정반대의 작업을 수행합니다. 이 경우 올바른 권한이 없는 모든 파일입니다.
  • -o(부울 OR) 두 개의 테스트 세트를 함께 그룹화하여 그 중 하나가 테스트될 때 일치합니다. 우선 순위가 가장 낮으므로 테스트를 두 개의 다른 그룹으로 구분합니다. 당신은 또한 수괄호를 사용하세요더 구체적으로. 여기에서는 권한이 다른 디렉터리 775와 권한이 다른 일반 파일을 일치시킵니다 664.

두 개의 별도 디렉토리 및 파일 명령을 원할 경우 반으로 자르고 -o각 반을 별도로 사용하십시오.

find -type f -not -perm 664
find -type d -not -perm 775

답변2

귀하의 코드가 무엇을 달성하려고 하는지 모르겠습니다. 권한이 잘못된 파일과 디렉터리를 찾는 이유는 파일과 디렉터리를 변경하기 위한 경우가 많습니다.

이것이 Ubuntu 16.04에서 성공적으로 사용한 것입니다.

find \! -perm 775 -type d -exec chmod 775 {} \;
find \! -perm 664 -type f -exec chmod 664 {} \;

이것은 입증되었습니다! 기호가 이스케이프되었습니다.

관련 정보