각 하위 디렉터리에 텍스트 파일 생성

각 하위 디렉터리에 텍스트 파일 생성

예를 들어, 이라는 디렉터리 계층 구조 abc와 텍스트 파일이 있습니다 names.txt. 텍스트 파일에서 몇 줄을 선택하고 의 각 하위 디렉터리에 샘플 텍스트가 포함된 새 파일을 만들어야 합니다. 예를 들어 abc선택한 각 줄 names.txt은 다음과 같습니다. 새 파일 중 하나의 이름입니다. xargsor 을 사용하여 한 줄로 이 작업을 수행 해야 합니다 -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 worldA

약간만 수정하면 특정 디렉터리의 파일로 출력되도록 할 수 있습니다 $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 \;

관련 정보