mv를 사용하여 확장자 없이 파일 이동

mv를 사용하여 확장자 없이 파일 이동

이미지(png, bmp, jpg)와 확장자가 없는 파일이 포함된 폴더가 있습니다.

확장자 없이 파일만 이동하는 방법을 모르겠습니다. 모두 무작위로 번호가 매겨진 파일입니다.

답변1

배쉬와 함께

shopt -s extglob
mv -- !(*.jpg|*.png|*.bmp) targetdir/

답변2

부정을 위해 ksh 확장 glob 연산자를 사용하십시오 !(...). 따라서 ksh, zsh -o kshglob또는 bash -O extglob:

rm -- !(*.*) /dest

이름에 점이 포함되지 않은 파일을 이동합니다( Except 이외의 쉘에서는 파일에 점이 포함 zsh되어 있어도 해당 파일이 없으면 이름이 지정된 파일을 이동할 수 있습니다 !(*.*)).

부정하려면 zsh확장 전역 연산자를 사용하십시오 .^zsh -o extendedglob

rm -- ^*.* /dest

위의 모든 경우에서 숨겨진 파일은 이동되지 않습니다. 첫째로 이름에 점이 포함되어 있기 때문입니다(점으로 시작함). 또한 glob 자체가 리터럴로 시작하지 않는 한 숨겨진 파일이 glob에서 제외되기 때문입니다 ..

파일을 이동하고 싶지만 .foo이동하고 싶지 않은 경우 .foo.png다음을 수행할 수 있습니다.

mv -- ^?*.*(D) /dest # with zsh -o extended-glob

mv -- !(?*.*) /dest # with bash -O extglob -O dotglob
                    # or   zsh -o kshglob -o dotglob -o nobareglobqual
                    # or   env FIGNORE='@(.|..)' ksh93

mv -- @(.|)+([^.]) /dest # with bash -O extglob or AT&T ksh

관련 정보