트리의 각 디렉터리에 대한 파일을 만드는 방법은 무엇입니까?

트리의 각 디렉터리에 대한 파일을 만드는 방법은 무엇입니까?

다음 트리 구조의 경우:

    .
└── dir1
    └── dir2
        └── dir3

각 디렉토리에 대해 파일(비어 있을 수 있음)을 생성하는 쉬운 방법은 무엇입니까? 결과 트리는 다음과 같습니다.

.
├── dir1
│   ├── dir2
│   │   ├── dir3
│   │   │   └── README
│   │   └── README
│   └── README
└── README

답변1

그리고 zsh:

touch -- README **/*(N/e[REPLY+=/README])

그것은 결합한다재귀 와일드카드( **/*) 그리고글로벌 예선,여기있어:

  • Nullglob: 일치하는 항목이 없으면 오류가 발생하지 않습니다.
  • /: 파일 형식 제한목차
  • e[code]: 각 파일에 대해 e평가되고 여기에 파일 경로에 추가됩니다( 평가된 코드에 저장됨).code/README$REPLY

아니면 당신은 사용할 수 있습니다익명 함수/README디렉터리 목록이 전달되고 전달된 인수의 각 디렉터리에 추가됩니다 touch.

() {touch -- $^@/README} . **/*(N/)

(그리고rc 스타일 배열 확장@구문을 사용하는 익명 함수 매개변수의 경우 $^array).

이들 모두에서 Dotglob glob 한정자를 추가하여 README숨겨진 디렉터리에 추가할 수 있습니다.

답변2

find를 사용하여 이 작업을 수행할 수 있습니다.

find . -mindepth 1 -type d -exec touch "{}/README" \;

설명하다

  • -mindepth 1현재 디렉터리를 포함하지 않도록 최소 깊이를 설정합니다.
  • -type d디렉토리만 검색됩니다.
  • -exec명령을 실행합니다
  • {}발견된 디렉터리의 경로를 포함합니다.

내장된 셸 명령만 사용하려는 경우:

for dir in *; do if [ -d "$dir" ]; then touch "$dir/README"; fi; done

설명하다

  • for*의 각 요소 , 즉 현재 디렉토리의 모든 파일을 반복합니다 . dir루프 중에 현재 요소가 포함됩니다.
  • if [ -d $dir ]요소가 디렉토리인지 확인한 다음
  • README포함된 디렉터리의 이름으로 이름이 지정된 파일을 만듭니다.$dir

관련 정보