chmod -R 775 *.cgi
은 현재 디렉터리의 파일에 대한 사용 권한 만 변경하며 하위 디렉터리의 파일은 전혀 수정되지 않습니다. 이는 단순히 chmod 775 *.cgi
과 똑같은 기능입니다. 사람들이 find
등으로 솔루션을 사용하는 것을 보았습니다. 좋아,하지만 심지어 아무것도하지 않으면 -R 모드가 존재하는 이유는 무엇입니까?chmod의 재귀 모드가 재귀를 제외한 모든 작업을 수행하는 이유는 무엇입니까?
답변
아마도 *.cgi
이라는 디렉토리가 없기 때문일 수 있습니다. manual Quoth :
-R 재귀 변경 파일 모드 비트. 디렉토리를 명명하는 각 파일 피연산자에 대해 chmod는 파일의 모드 비트를 변경하고 그 아래의 파일 계층에있는 모든 파일 을 변경합니다. 예를 들어
:
$ ls -R
.:
a a.c b.c c.c
./a:
a.c b.c sub
./a/sub:
a.c b.c
$ chmod -R 444 *.c
$ ls -l
drwxr-xr-x 3 msw msw 4096 2010-08-12 18:07 a
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 a.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 b.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 c.c
$ : directory a not affected
$ chmod -R u-w a
$ ls -l a
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
dr-xr-xr-x 3 msw msw 4096 2010-08-12 18:07 sub
$ ls -l a/sub
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
$ : got em
-R
인수로 주어진 임의의 디렉토리로 재귀 할 chmod
을 알려줍니다. 당신이 chmod -R 775 *.cgi
을 말한다면
, 쉘은 그 패턴과 일치하는 파일의 목록에 *.cgi
를 확장하고 인수의 목록으로 그것을 전달합니다 - 그래서 chmod
다른 디렉토리를 조사하도록 요구되지 않습니다.
는 (그것은 어떤 디렉토리 *.cgi
일치에 같이 Recurse ... 것이다 )
오, 잡았다. 따라서 특정 디렉토리 아래에있는 모든 파일을 재귀 적으로 변경하는 데 유용합니다. –
당신이 여기
find . -name '*.cgi' -print0 | xargs -0 chmod 755
find
하려고 원하는 것을 달성하기는 모든 파일의 목록을 생성합니다 .cgi
은 현재 디렉토리에서 아래쪽으로 끝나고 xargs
에 해당 목록을 전달하고 각각 chmod
을 적용합니다.
*.cgi
은 셸에서 .cgi
으로 끝나는 현재 디렉토리의 모든 파일 이름 목록으로 확장됩니다. 그런 다음 쉘은 파일 이름 목록과 함께 chmod
을 호출합니다.
chmod
은 셸에서 가져온 파일 이름을 모두보고 모드가 변경되며 일부 파일이 디렉토리 인 경우 재발행됩니다. 그러나 아마도 그 중 누구도 존재하지 않으므로 재발 할 것이 없습니다.
chmod
를 실행하려면 : -R 명령 줄 옵션 동안
find . -name '*.cgi' -print0 | xargs -0 chmod 775
이 답변은 동일합니다. dmckee –
*
는 쉘 내장입니다. 따라서 chmod
은 결코 인수로 *
을 얻지 못할 것입니다.
foo0.cgi와 foo1.cgi가 디렉토리의 내용 인 경우를 넣으십시오. chmod -R o+r *.cgi
을 입력하면 chmod
은 인수로 '-R', 'o + r', 'foo0.cgi'및 'foo1.cgi'을 가져옵니다.당신이 원하는 무엇
쉽게 수행 할 수 있습니다 : 모든 해답에 대한
find . -iname '*.cgi' | xargs chmod 755
이 답변은 동일한 dmckee입니다. –
- 1. Android : 아니요 애플리케이션이 작업을 수행하는 이유는 무엇입니까?
- 2. 모든 작업이 같은 작업을 수행하는 모든 스레드
- 3. MySQL에서 가장 재귀를 재귀 적으로 선택
- 4. Parallel.Invoke가 모든 작업을 완료하지 못하는 이유는 무엇입니까?
- 5. Firefox를 제외한 모든 브라우저에서이 범위가 과장된 이유는 무엇입니까?
- 6. Ruby가 Config라는 이름을 제외한 모든 클래스를 찾는 이유는 무엇입니까?
- 7. Ruby에서이 작업을 수행하는 방법은 무엇입니까?
- 8. Cocos2d에서이 작업을 수행하는 방법은 무엇입니까?
- 9. Mysql이 작업을 수행하는 방법은 무엇입니까?
- 10. PHP 재귀 : PHP에서 재귀를 만드는 방법
- 11. C++ int에 char 할당 - 적어도 경고없이이 작업을 수행하는 이유는 무엇입니까?
- 12. bash를 사용하여 디렉토리의 모든 파일에 대해 작업을 수행하는 방법은 무엇입니까?
- 13. 릴리스 모드가 Thread.CurrentThread.CurrentCulture에 영향을주는 이유는 무엇입니까?
- 14. python cgi를 사용하여 작업을 수행하는 방법은 무엇입니까?
- 15. 재귀를 피하십시오.
- 16. 이 작업을 수행하는 LINQ의 유용한 방법은 무엇입니까
- 17. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까
- 18. 재귀를 사용한 데이터베이스 디자인
- 19. struts2에서 백그라운드 작업을 수행하는 방법은 무엇입니까?
- 20. 이 작업을 수행하는 가장 효율적인 방법은 무엇입니까?
- 21. Scala에서 이와 같은 작업을 수행하는 방법은 무엇입니까?
- 22. 레이크 작업을 수행하는 방법
- 23. LINQ에서이 작업을 수행하는 방법?
- 24. linq를 사용하여이 작업을 수행하는 방법은 무엇입니까?
- 25. jQuery를 사용하여 다음 작업을 수행하는 방법은 무엇입니까?
- 26. 로컬 어셈블리에서 XmlnsDefinition 작업을 수행하는 방법은 무엇입니까?
- 27. 자연 분류 작업을 수행하는 방법은 무엇입니까?
- 28. 프로세스 종료시 작업을 수행하는 방법은 무엇입니까?
- 29. C에서 루아 테이블 작업을 수행하는 방법은 무엇입니까?
- 30. Rails 3에서이 작업을 수행하는 방법은 무엇입니까?
쿨 감사합니다. find를 사용하여 설명하는 해답은 유용했지만, -R이 무엇인지 궁금해서 msw의 답변을 선택했습니다. msw가 조금 더 일찍 왔기 때문에 Matthew 대신 msw를 선택했습니다. –