각 하위 폴더에 텍스트가 포함된 파일을 만드는 방법은 무엇입니까?

각 하위 폴더에 텍스트가 포함된 파일을 만드는 방법은 무엇입니까?

예를 들어 계층 구조가 있습니다 a/b/c. 각 폴더에 d.txt 이름과 텍스트가 포함된 파일을 만드는 방법은 무엇입니까?"Hello World"aa/ba/b/c

답변1

쉘 포함 zsh:

echo Hello World > a{,/b{,/c}}/d.txt

또는 재귀 검색을 통해 여기에서 발견된 숨겨지지 않은 모든 디렉터리에 대해 다음을 수행합니다.

dirs=(**/*(/))
echo Hello World > $^dirs/d.txt

이는 내부적으로 관련되므로 tee출력이 동시에 모든 파일에 기록됩니다. 파일 수가 많은 경우 열린 파일 수에 제한이 있을 수 있으며, 이 경우 한 번에 한 파일씩 순차적으로 작성해야 할 수 있습니다.

for d ($dirs) echo Hello World > $d/d.txt

표준에 해당하는 내용은 다음과 같습니다.

LC_ALL=C find . ! -name . \( -name '.*' -prune -o -type d -exec sh -c '
  for dir do
    echo Hello World > "$dir/d.txt"
  done' sh {} + \)
  • LC_ALL=C이는 로 시작 하고 그 뒤에 유효한 문자 시퀀스가 ​​오는 파일뿐만 아니라 -name '.*'로 시작하는 모든 파일과 일치합니다 ...
  • ! -name .원하는 현재 디렉터리만 제외아들-폴더(둘 다 정리하고 싶지 않음 .)
  • -name '.*' -prune, 숨겨진 파일을 제외하고 find숨겨진 디렉터리로 내려가는 것을 방지합니다.
  • -o: 그렇지 않은 경우(또는)
  • -type d해당 유형의 파일만 선택목차.
  • -exec sh -c 'inline-script' sh {} +: 일치하는 디렉터리 목록을 인라인 스크립트에 전달합니다.

답변2

노력하다

find . -type d -exec /bin/bash -c 'echo "Hello world" >'{}'/d.txt' \;

관련 정보