여러 디렉터리가 있으면 두 번째 디렉터리로 이동하고 싶습니다.
초기의:
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
.