재귀 모드는 파일이 아닌 디렉토리에서만 작동합니다. 글로브 '* .pdf'를 사용하여 쉘은 파일 목록을 chown으로 전달합니다. 파일 목록을보고 파일에 대한 사용 권한을 변경하면됩니다.
쉘에서 glob는 명령이 아니라 쉘에 의해 평가된다는 것을 기억하십시오. glob이 파일과 일치하면 해당 glob이 명령으로 전달되고 명령은 glob가 존재한다는 것을 절대 알 수 없습니다. (이것은 Windows 명령 프롬프트가 작업을 수행하는 방법과 다릅니다). 디렉토리가있는 경우 내용은 다음과 같습니다.
machine:$ ls -F
file1.pdf file2.pdf other.txt subdir/
그리고 당신은 입력 :
chown -R someuser:somegroup *.pdf
쉘은 먼저리스트를 만듭니다 : file1.pdf file2.pdf
그런 다음 명령을 실행하십시오.
chown -R someuser:somegroup file1.pdf file2.pdf
-R에 대한 디렉토리가 없습니다.를 참조하십시오. 명령 행에서 두 파일의 소유권을 변경하고 기발한 -R 플래그를 무시하고 요청한 내용을 수행합니다.
'* .pdf'를이 디렉토리 및 서브 디렉토리의 패턴으로 사용하려면 find
파일 이름 패턴 (또는 다른 많은 크리 테리아)과 일치하는 파일을 찾아서 부속 명령에 전달할 수 있습니다.
find . -type f -name '*.pdf' | xargs chown someuser:somegroup
이것은 현재 디렉토리 '.'에서 시작합니다. 이름 패턴의 파일 (파일 유형 f)을 '*.pdf'
찾은 다음 xargs로 전달하여 chmod에 대한 명령 행을 구성합니다. 패턴 주위의 따옴표를 주목하십시오 '*.pdf'
. 쉘은 가능하다면 글로브를 생성하지만 패턴을 전달하기 find
를 원하므로 인용해야합니다.
파일 이름에 공백이있을 수 있으므로 트릭을 사용하여 파일 이름을 공백없이 안전하게 만들려고합니다.
find . -type f -name '*.pdf' -print0 | xargs -0 chown someuser:somegroup
bash 3 이하에서는 이것이 필요한 방법입니다. bash 4 (와 shopt -s globstar
) 및 기타 쉘 에서 더 강력한 글 러빙을 사용할 수 있습니다 . 재귀 glob을 사용하는 zsh에서도 동일합니다 **
.
chown -R someuser:somegroup ./**/*.pdf
shopt -s globstar
가 재귀 globbing 을 수행 하도록 반영하도록 편집되었습니다 .