다음과 같은 기존 하위 디렉터리가 많이 있습니다.
/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를 터치하세요. 완료