mv 여러 디렉터리를 동일한 디렉터리로

mv 여러 디렉터리를 동일한 디렉터리로

여러 디렉터리가 있으면 두 번째 디렉터리로 이동하고 싶습니다.

초기의:

dmv/toto/toto0
dmv/toto1/toto1
dmv/toto2/toto2

dmv/toto0/toto00
dmv/toto2/toto02

결정적인:

dmv/toto/toto0
dmv/toto1/toto1
dmv/toto2/toto2

dmv2/toto0/toto00
dmv2/toto0/toto0
dmv2/toto2/toto02
dmv2/toto2/toto2

이 작업을 시도했지만 디렉토리가 존재하는지 확인하지 않습니다.

~/dmv/$ for i in $(ls); do mv "${i}"/* ../dmv2/"${i}"; done

답변1

귀하의 초기 및 최종 디렉토리 목록 단계는 약간 비밀스럽기 때문에 정확히 무엇을 요구하시는지 잘 모르겠습니다. 어쩌면 이것이 당신에게 조금 도움이 될 것입니다. mvDir.sh예를 들어 다음과 같이 스크립트를 호출하면 더 읽기 쉬운 경향이 있습니다 .

#!/usr/bin/bash
for file in ./*; do
    [ -d "${file}" ] && [ mkdir -p ../dmv2/"${file}" ] \
    && mv "${file}"/* ../dmv2/"${file}" 
done

확실하게 하다:

  • 환경 변수에 포함된 스크립트 경로의 위치입니다 PATH. CLI에서 : $ echo "$PATH")를 실행하여 확인하세요.
  • 스크립트는 실행 가능합니다. CLI에서 다음을 수행합니다. $ chmod u+x mvDir.sh

이를 실행하려면 스크립트가 포함된 디렉터리와 이름을 확인하려는 디렉터리로 이동한 후 cli에서 다음을 수행하세요.$ ./mvDir.sh

당황스러울 정도로 긴 문장을 고집한다면 다음과 같이 cli에서 수행하십시오.

$ for file in ./*; do [ -d "${file}" ] && [ mkdir -p ../dmv2/"${file}" ] && mv "${file}"/* ../dmv2/"${file}"; done

이를 수행하는 다른 고급 방법(예: find.

관련 정보