![각 하위 디렉터리에 텍스트 파일 생성](https://linux55.com/image/143424/%EA%B0%81%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%20%EC%83%9D%EC%84%B1.png)
예를 들어, 이라는 디렉터리 계층 구조 abc
와 텍스트 파일이 있습니다 names.txt
. 텍스트 파일에서 몇 줄을 선택하고 의 각 하위 디렉터리에 샘플 텍스트가 포함된 새 파일을 만들어야 합니다. 예를 들어 abc
선택한 각 줄 names.txt
은 다음과 같습니다. 새 파일 중 하나의 이름입니다. xargs
or 을 사용하여 한 줄로 이 작업을 수행 해야 합니다 -exec
. 다음과 같이 시도했지만 작동하지 않는 것 같습니다.
find abc -type d -exec sh -c 'grep ^'A' names.txt | xargs -I% sh -c 'echo 'Hello world' | tee {}/%'' \;
이것을 올바른 방법으로 수행하는 방법은 무엇입니까?
답변1
디렉토리에 필요한 것부터 시작해 보겠습니다.
awk '/^A/ { print "Hello world" >$0 }' names.txt
입력 줄이 대문자로 시작하면 호출된 파일을 읽고 names.txt
해당 파일의 전체 입력 줄에서 제공하는 각 파일 이름에 문자열을 씁니다.Hello world
A
약간만 수정하면 특정 디렉터리의 파일로 출력되도록 할 수 있습니다 $dirname
.
awk -v dir="$dirname" '/^A/ { print "Hello world" >(dir "/" $0) }' names.txt
find
그런 다음 모든 하위 디렉터리(시작 디렉터리 포함)에 대해 이를 호출 할 수 있습니다 .
find abc -type d -exec awk -v dir={} '/^A/ { print "Hello world" >(dir "/" $0) }' names.txt \;