서로 다른 위치에 비슷한 이름을 가진 디렉터리 집합의 경우
/foldX/dirA
하위 디렉토리가 있습니다aa1 aa2 aa3 aa4 aa5
/foldZ/dirA
하위 디렉토리가 있습니다aa1 aa2 aa3
/foldY/dirA
하위 디렉토리가 있습니다aa1 aa2 aa3
aa*
디렉토리를 다른 폴더로 복사하거나 이동하는 효율적인 방법은 /foldNew/dirA
무엇 입니까 aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10
?
aa1
누구 에게 aa4
누구로부터foldX
aa5
누구 에게 aa7
누구로부터foldY
aa8
누구 에게 aa10
누구로부터foldZ
답변1
다음 스크립트는 원하는 작업을 수행합니다.
#!/bin/bash
counter=0
mkdir foldNew
for i in fold?/dirA/aa*; do
counter=$((counter + 1))
mv $i foldNew/aa$counter
done
이동된 폴더 수를 추적하고 Bash의 와일드카드 시스템을 사용하여 이동하려는 모든 폴더를 반복합니다.
설명하신 설정을 사용하여 테스트했는데 원하는 대로 작동합니다. 유일한 예외는 dirA에 4개가 아닌 5개의 하위 디렉터리가 있으므로 aa1에서 aa11로 이동하는 것입니다.
이 스크립트는 aa20을 aa3 앞으로 이동합니다. 하위 디렉터리의 순서가 정말로 중요한 경우 다음 코드를 시도해 볼 수 있습니다.
#!/bin/bash
counter=0
mkdir foldNew
for i in $(echo fold?/dirA/aa* | sort -V); do
counter=$((counter + 1))
mv $i foldNew/aa$counter
done
다만, 파일명에 공백이나 개행 문자를 잘 처리하지 못하는 것 같으니 사용 시 주의하시기 바랍니다.