파일 소유자를 재귀 적으로 변경하지만 디렉토리는 변경하지 않습니다. 소유자 (또는 권한)를 변경하고 싶습니다. 이것은

~ 50k 디렉토리와 ~ 1m 파일이있는 디렉토리가 있습니다.

디렉토리가 아닌 모든 파일의 소유자 (또는 권한)를 변경하고 싶습니다. 이것은 원격 서버 (~ 150k 디렉토리 및 ~ 3.6m 파일)에서 추가 파일을 SCP로 보내려고하기 때문입니다.

내가 가진 디렉토리는 원격 디렉토리의 일부이지만 scp는 실패했습니다 …

SCP를 다시 실행하면 원격 디렉토리에서 이미 복사 한 파일을 덮어 쓰면서 다시 시작됩니다.



답변

를 사용할 수 있으며 프로세스에서 트리거되지 않는다는 find추가 이점이 ARG_MAX있습니다. 부모 디렉토리에서 :

find . -type f -exec chown newowner {} +

의 경우 chmod:

find . -type f -exec chmod 644 {} +

-type ffind파일 만.


답변

또 다른 대안은을 사용하는 것 xargs입니다. -print0옵션과 함께 find해당 -0옵션 을 사용해야합니다 xargs.

find . -type f -print0 | xargs -0 chown newuser:newgroup

보낸 사람 man find:

-print0

표준 출력에 전체 파일 이름을 인쇄 한 다음 null 문자를 출력하십시오 . 이렇게 하면 개행 또는 다른 유형의 공백이 포함 된 파일 이름을 찾기 출력을 처리하는 프로그램에서 올바르게 해석 할 수 있습니다. 이 옵션은 xargs의 -0 옵션에 해당합니다.

xargs또한 올바르게 처리 ARG_MAX합니다.


답변