모든 하위 디렉터리에 동일한 파일을 만드는 방법은 무엇입니까?

모든 하위 디렉터리에 동일한 파일을 만드는 방법은 무엇입니까?

다음과 같은 기존 하위 디렉터리가 많이 있습니다.

/path/to/my/subs/a
/path/to/my/subs/b
/path/to/my/subs/c

아니요, 각각에 새 파일을 만들고 싶습니다. 파일 이름은 다음과 같이 일정합니다.

/path/to/my/subs/a/foo.md
/path/to/my/subs/b/foo.md
/path/to/my/subs/c/foo.md

어떻게 해야 하나요? 나는 그렇게 touch /path/to/my/subs/*/foo.md되길 바랐지만 그렇게 말했어touch: /path/to/my/subs/*/foo.md: No such file or directory

답변1

bash쉘로 사용한다고 가정하고 중괄호 확장을 사용하십시오.

touch /path/to/my/subs/{a,b,c}/foo.md

답변2

유틸리티 를 사용할 수 있습니다 find.

find /path/to/my/subs -type d -links 2 -exec touch "{}/foo.md" \;

그러면 subs에서 시작하여 전체 트리를 탐색하고 리프(터미널) 디렉터리를 찾은 다음 그곳에서 foo md 파일을 터치합니다.

"-exec"... 부분을 생략하고 xargs마지막에 파일을 모두 함께 생성하는 데 사용하여 더 적은 touch바이너리를 생성하거나 한 번의 터치를 사용할 수도 있습니다.

touch $( find /path/to/my/subs -type d -links 2 | sed -e 's#$#/foo.md#g' )

해당 find부분은 디렉토리를 가져와 sed적절한 파일 이름으로 변환합니다.

단일 디렉터리 계층이 있는 경우:

/path/to/my/subs/*의 디렉토리에 대해; $dir/foo.md를 터치하세요. 완료

관련 정보