세 번째 수준 디렉터리의 이름을 같은 이름으로 바꿉니다.

세 번째 수준 디렉터리의 이름을 같은 이름으로 바꿉니다.

나는 100개의 하위 디렉터리를 포함하는 디렉터리 A를 가지고 있습니다. 이러한 각 하위 디렉터리에는 디렉터리가 포함되어 있습니다.

예를 들어, 100개의 디렉터리 각각에 있는 이 단일 디렉터리의 이름을 같은 이름으로 바꾸려면 어떻게 해야 합니까 X? 명령 을 시도했지만 mmv운이 없습니다.

어떤 도움이라도 대단히 감사하겠습니다!

답변1

더 나은 방법일 수도 있지만,

사용 bashfind

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

관련 정보