![신속하고 한 번에 적은 수의 파일이 필요합니다.](https://linux55.com/image/190329/%EC%8B%A0%EC%86%8D%ED%95%98%EA%B3%A0%20%ED%95%9C%20%EB%B2%88%EC%97%90%20%EC%A0%81%EC%9D%80%20%EC%88%98%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EB%8B%A4..png)
cp 명령을 통해 .txt, .cpp 및 .h 확장자로 끝나지 않는 폴더의 모든 파일을 별도의 폴더로 이동해야 합니다.
이를 수행하는 기본 제공 방법이 있습니까? 아니면 스크립트를 작성해야 합니까?
답변1
그것은 모두 필요한 견고성에 달려 있습니다. 이러한 아이디어 중 일부(예: -print0)는 모든 시스템에서 사용할 수 없으므로 YMMV입니다.
신속하고 한 번에 적은 수의 파일이 필요합니다.
mkdir .tmp
mv *.txt *.cpp *.h .tmp
mv * /separate_folder/
mv .tmp/* .
rmdir .tmp
물론 해킹이지만 I/O를 차지하지 않고 몇 초밖에 걸리지 않으며 이식성이 뛰어납니다.
많은 파일을 처리하는 경우:
find . -maxdepth 1 -type f ! -name '*.txt' ! -name '*.cpp' ! -name '*.h' -print0 | xargs -0 mv -t /separate_folder/
파일 이름에 공백이나 기타 이상한 문자가 포함되어 있지 않으면 아마도 및를 생략할 수 있습니다 -print0
( -0
따라서 기본 -print
논리에 의존함).
배쉬를 사용하는 경우
GLOBIGNORE
!(pattern-list)
"패턴과 일치하는 파일 이름 집합 제한" 및 "주어진 패턴 중 하나를 제외한 모든 항목과 일치" 변수에 대해서는 Bash 매뉴얼 페이지를 참조하세요 .