얻은 모든 파일과 디렉터리에 대해 다음 명령을 실행 하고 싶습니다 chmod 555
(test 디렉터리와 그 안의 모든 파일과 디렉터리를 반환합니다).
find ~/.config/google-chrome -type d -name test -exec find {} \;
답변1
이 경우 chmod -R
다음을 수행 할 수 있습니다.user26112의 답변, 그러나 일반적으로 다음과 같이 할 수 있습니다.
find ~/.config/google-chrome -type d -name test -exec sh -c '
for i do
find "$i" -exec chmod 555 {\} +
done' sh {} +
비결은 쉘을 사용하고 따옴표(예: {\}
또는 {"}"
)를 사용하여 내부가 {}
외부로 확장되지 않도록 하는 것입니다 find
(단지 인수의 일부일지라도 find
해당 구현은 여전히 확장된다는 점을 고려).{}
GNU find
4.9.0 이상에서는 stdin에서 NUL 구분 레코드로 처리할 파일 목록 가져오기도 지원하므로 다음을 수행할 수 있습니다.
find -files0-from <(
find ~/.config/google-chrome -type d -name test -print0
) -exec chmod 555 {} +
이전 버전의 경우 GNU를 사용하여 유사한 작업을 수행 xargs
하고 sh
매개변수 순서를 변경할 수 있습니다.
xargs -r0a <(
find ~/.config/google-chrome -type d -name test -print0
) sh -c 'exec find "$@" -exec chmod 555 {} +' sh
( <(...)
예프로세스 교체, zsh 및 bash도 ksh 기능을 지원하므로 yash
's'와 혼동 하지 마세요.프로세스 리디렉션).
답변2
chmod
플래그 를 사용하여 -R
디렉터리와 그 아래 계층 구조에 있는 모든 파일 및 디렉터리의 권한을 변경할 수 있습니다.
find ~/.config/google-chrome -type d -name test -exec chmod -R 555 '{}' \;
답변3
정말로 둘 다 원한다면 find -exec
다음을 시도해 보십시오.
find /etc -type f -exec sh -c 'find "$0" -exec echo {\} \;' {} \;
(이것은 찾은 내용을 echo
명령 에 전달합니다 )find
find /etc -type d -exec sh -c 'find "$0" -type f -exec echo "$0" {\} \;' {} \;
(유용한 예: 디렉터리 이름과 그 안에 있는 파일 목록 인쇄)
다음 을 사용 하여 절의 파이프 문제를 sh -c
해결할 수도 있습니다.find -exec
sh -c
$0
$1
답변4
이 명령을 실행할 수도 있습니다. 모든 디렉터리에서 실행되지만 인수로 전달된 여러 "테스트" 디렉터리를 실행한다는 +
인수를 사용합니다 .find
chmod
$ find ~/.config/google-chrome -type d -name test -exec chmod -R 555 '{}' +