
~50,000개의 디렉토리와 ~1m의 파일이 있는 디렉토리가 있습니다.
디렉토리가 아닌 모든 파일의 소유자(또는 권한)를 변경하고 싶습니다. 이는 원격 서버에서 추가 파일(~150k 디렉터리 및 ~3.6m 파일)을 SCP로 처리하려고 하기 때문입니다.
내가 가지고 있는 디렉토리는 원격 디렉토리의 일부이지만 scp가 실패했습니다...
SCP를 다시 실행하면 원격 디렉터리에서 이미 복사한 파일을 덮어쓰면서 다시 시작됩니다.
답변1
을 사용할 수 있으며 프로세스에서 find
이 트리거되지 않는다는 추가 이점이 있습니다 . ARG_MAX
상위 디렉토리에서:
find . -type f -exec chown newowner {} +
을 위한 chmod
:
find . -type f -exec chmod 644 {} +
-type f
파일만 됩니다 find
.
답변2
또 다른 대안은 를 사용하는 것입니다 xargs
. 다음 -print0
옵션 find
과 해당 -0
옵션을 사용해야 합니다 xargs
.
find . -type f -print0 | xargs -0 chown newuser:newgroup
에서 man find
:
-인쇄0
표준 출력에 전체 파일 이름을 인쇄하고 그 뒤에널 문자. 이것줄 바꿈이나 다른 유형의 공백이 포함된 파일 이름을 허용합니다.찾기 출력을 처리하는 프로그램에서 올바르게 해석됩니다. 이 옵션은 xargs의 -0 옵션에 해당합니다.
xargs
또한 올바르게 처리합니다 ARG_MAX
.