![세 번째 수준 디렉터리의 이름을 같은 이름으로 바꿉니다.](https://linux55.com/image/15405/%EC%84%B8%20%EB%B2%88%EC%A7%B8%20%EC%88%98%EC%A4%80%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B0%99%EC%9D%80%20%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
나는 100개의 하위 디렉터리를 포함하는 디렉터리 A를 가지고 있습니다. 이러한 각 하위 디렉터리에는 디렉터리가 포함되어 있습니다.
예를 들어, 100개의 디렉터리 각각에 있는 이 단일 디렉터리의 이름을 같은 이름으로 바꾸려면 어떻게 해야 합니까 X
? 명령 을 시도했지만 mmv
운이 없습니다.
어떤 도움이라도 대단히 감사하겠습니다!
답변1
더 나은 방법일 수도 있지만,
사용 bash
및find
while IFS= read -r dir; do
mv -- "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)
먼저 테스트를 실행해 보세요. 예를 들면 다음과 같습니다.
while IFS= read -r dir; do
printf 'mv "%s" "%s"\n' "$dir" "${dir%/*}/X"
done< <(find . -maxdepth 2 -mindepth 2 -type d)
간단히 말해서:
find
.
기본 디렉토리인 현재 디렉토리(일반적으로A
귀하의 경우)type d
(디렉터리) 최소 및 최대 깊이는 2입니다.
bash
읽고$dir
다음으로 이동하세요.find
$dir
${dir%/*}
마지막 항목/
과 그 이후의 항목 모두 삭제/X
새 디렉터리 이름을 추가합니다.
예를 들어 find ./A ...
, A등급보다 한 수준 아래에 거주하는 경우 이 등급을 사용하세요.
선택적으로 (비 POSIX)에 추가하여 수행된 작업을 표시합니다 -v
.mv