한 디렉터리에서 다른 디렉터리로 전체가 아닌 일부 파일을 이동하는 방법은 무엇입니까?

한 디렉터리에서 다른 디렉터리로 전체가 아닌 일부 파일을 이동하는 방법은 무엇입니까?

한 디렉터리에서 다른 디렉터리로 파일을 이동해야 합니다. 그러나 몇 가지 문제도 있습니다. 내 파일 이름 패턴은 다음과 같습니다.

  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 \;

관련 정보