![한 디렉터리에서 다른 디렉터리로 전체가 아닌 일부 파일을 이동하는 방법은 무엇입니까?](https://linux55.com/image/2924/%ED%95%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%EB%8B%A4%EB%A5%B8%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EC%A0%84%EC%B2%B4%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%9D%BC%EB%B6%80%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%B4%EB%8F%99%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
한 디렉터리에서 다른 디렉터리로 파일을 이동해야 합니다. 그러나 몇 가지 문제도 있습니다. 내 파일 이름 패턴은 다음과 같습니다.
apple.0, apple.<n>, n -> {0,1,2,3 ...~ }
mv apple.*
항상 활성 상태인 apple.0을 유지해야 하기 때문에 작동하지 않습니다 .
이동하는 방법(이 경우 apple.0 유지)
답변1
bash를 사용한다면 다음을 사용할 수 있어야합니다.
mv apple.[^0]* /other/directory/
확장자가 0으로 시작하지 않는 모든 파일이 이동됩니다([ ] 시작 부분의 "^"는 bash에서 "no"를 의미함). 엔딩에 문자가 하나만 있다고 확신하는 경우 다음을 사용할 수도 있습니다.
mv apple.[^0] /other/directory/
숫자로 끝나는 파일만 있는지 확인해야 하는 경우 다음을 사용할 수 있습니다.
shopt -s extglob
mv apple.@([1-9])*([0-9]) /other/directory/
하지만 이것은 apple.01 또는 이와 유사한 것과 일치하지 않습니다 ...
마지막 것은 숫자로 끝나는 모든 사과 파일을 가져와야 합니다.
shopt -s extglob
mv apple.*([1-9]|[0-9]+([0-9])) /other/directory/
답변2
bash가 있고 이와 같은 파일 일치에 관심이 없다면 apple.not-a-number
다음을 시도하십시오.
shopt -s extglob
mv apple.!(0) /new/directory
답변3
필요에 따라 이동할 파일과 이동하지 않을 파일을 지정하세요.
find /source/directory -maxdepth 1 -name "apple.*" ! -name "apple.0" -exec mv {} /new/directory \;