![확장자 [중복]을 제외한 모든 파일 이동](https://rvso.com/image/1126761/%ED%99%95%EC%9E%A5%EC%9E%90%20%5B%EC%A4%91%EB%B3%B5%5D%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%9C%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%8F%99.png)
내 다운로드에서 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.gz
및 test.txt
등 을 포함하는 "Xtest" 폴더 test2.txt
와 다음을 제외하고 모든 파일을 이동하려는 빈 폴더 "Xtest2"가 있습니다 .tar.gz
.
cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2
제외한 모든 콘텐츠가 폴더 test.tar.gz
로 이동됩니다 Xtest2
.