다음 트리 구조의 경우:
.
└── dir1
└── dir2
└── dir3
각 디렉토리에 대해 파일(비어 있을 수 있음)을 생성하는 쉬운 방법은 무엇입니까? 결과 트리는 다음과 같습니다.
.
├── dir1
│ ├── dir2
│ │ ├── dir3
│ │ │ └── README
│ │ └── README
│ └── README
└── README
답변1
그리고 zsh
:
touch -- README **/*(N/e[REPLY+=/README])
그것은 결합한다재귀 와일드카드( **/*
) 그리고글로벌 예선,여기있어:
N
ullglob: 일치하는 항목이 없으면 오류가 발생하지 않습니다./
: 파일 형식 제한목차e[code]
: 각 파일에 대해e
평가되고 여기에 파일 경로에 추가됩니다( 평가된 코드에 저장됨).code
/README
$REPLY
아니면 당신은 사용할 수 있습니다익명 함수/README
디렉터리 목록이 전달되고 전달된 인수의 각 디렉터리에 추가됩니다 touch
.
() {touch -- $^@/README} . **/*(N/)
(그리고rc 스타일 배열 확장@
구문을 사용하는 익명 함수 매개변수의 경우 $^array
).
이들 모두에서 D
otglob 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