예를 들어 계층 구조가 있습니다 a/b/c
. 각 폴더에 d.txt
이름과 텍스트가 포함된 파일을 만드는 방법은 무엇입니까?"Hello World"
a
a/b
a/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' \;