2015-01-29 12 views
0

템플릿 디렉토리가있는 사이트가 있습니다. 각 모듈에는 고유 한 템플릿 디렉토리가 있습니다 (따라서 templates이라는 N 개의 디렉토리가 있습니다)."example"이라고 불리는 모든 dir을 찾고, 그 내용을 쓰기 가능으로 설정하십시오.

각 디렉토리에는 translated이라는 디렉토리가 있습니다. 그 모든 디렉터리를 설정하는 스크립트가 필요하며 쓰기가 가능합니다.

나는 루프를 통해 이것을 선호하므로 결과를 반향시킬 수 있습니다. 내 쉘 기술은 내가 현재 작업 디렉토리에서 DIRS을 찾을 수 그들을 결합 할 수없는 것,하지만 난 얻을 수없는 것, (여전히) 매우 최소화 그것을 재귀 :

for f in ./*/translated/ 
do 
    echo $f 
done 

이 만 ./templates/translated/ 발견,하지만 ./some/dirs/deeper/translated/

은 내가 chmod a+rw 지금 $f를 사용할 수 있지만 이것은 단지 쓸 내용을 설정합니다, 나는 또한 디렉토리 자체를 어떻게받을 수 있나요? 나는 그것에 새 파일을 써야한다.

Summery :
1) 재귀 적으로 만들려면 어떻게해야합니까?
2) 디렉토리 자체를 +rw으로 설정하려면 어떻게해야합니까?

+1

편집을 롤백했습니다. 추가 질문은 별도의 질문으로 게시 할만큼 중요합니다. 새로운 질문을 게시 할 때 배경으로 유용하다고 생각되면 자유롭게이 질문에 대한 링크를 추가하십시오. – tripleee

답변

2

물건을 재귀 적으로 찾는 도구는 find입니다.

find . -name 'translated' -type d -exec echo chmod -R u+rw {} + 

결과에 만족하면 echo을 제거하십시오. find-exec ... +을 지원하지 않는 경우 대신 -exec ... \;을 사용해보세요.

일부 셸에는 동일한 작업을 수행하는 와일드 카드 **이 있지만 일부 스크립트는 해당 셸에 연결됩니다.

+1

좋은 훈련 바퀴 관용구 : "첫 번째로 echo하고 행복하다면 echo를 제거하십시오" – cnicutar

+0

"echo each found dir"메쏘드가 아니기를 바랍니다. 그러나 이것은 좋고 간단합니다. 적은 코드는 오류가 적은 공간을 의미합니다. – Martijn

+0

'-exec'를'-print' (또는 GNU'find'가 있으면'-print0')로 바꾸면'chmod -v'를 넣어서 무엇을하고 있는지 볼 수 있습니다. 이점과 의미에 대해서는 설명서를 참조하십시오). 빠른 인터넷 검색은 기초를 알고 있으므로 수만 가지의 예제를 찾아야합니다. – tripleee