확장자 [중복]을 제외한 모든 파일 이동

확장자 [중복]을 제외한 모든 파일 이동

내 다운로드에서 tar.bz2를 /usr/src로 옮겼습니다. 여기에는 내 시스템에 설치한 모든 항목을 넣기를 좋아합니다. 이제 파일을 추출하고 해당 내용을 /usr/share/icons로 옮기고 싶습니다. 하지만 tar.bz2 자체를 옮기고 싶지는 않습니다.

# ls -l | grep Comix
-rw-rw-r--  1 guarddog guarddog   2190951 May 26 11:03 ComixCursors-0.8.2.tar.bz2
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Black
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Blue
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Green
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Orange

출력 명령에서 터미널 내에서 tar.bz2 이외의 모든 항목을 이동하고 싶습니다.

다음을 시도했지만 불행히도 tar.bz2도 이동합니다.

 mv Comix*[!tar.bz] /usr/local/share

나는 부정 연산자가 tar.bz로 끝나는 파일을 제외할 것으로 예상했습니다. 아래 해결책은 내가 찾던 것인데, find를 복잡한 플래그와 함께 사용하고 싶지 않았습니다.

답변1

GLOBIGNORE다음 변수를 사용할 수 있습니다 bash.

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

이제 다음을 실행하세요.

mv ComixCursors* /usr/share/icons/

또한 작업이 완료되면 unset원하지 않는 시나리오를 방지하기 위해 변수를 사용하는 것이 좋습니다.

unset GLOBIGNORE

또는

GLOBIGNORE=

답변2

좋은 오래된 것을 사용하십시오 find:

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/

답변3

예를 들어 홈 디렉터리에서 사용할 수 있는 간단한 명령도 있습니다. test.tar.gztest.txt등 을 포함하는 "Xtest" 폴더 test2.txt와 다음을 제외하고 모든 파일을 이동하려는 빈 폴더 "Xtest2"가 있습니다 .tar.gz.

cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2

제외한 모든 콘텐츠가 폴더 test.tar.gz로 이동됩니다 Xtest2.

관련 정보