신속하고 한 번에 적은 수의 파일이 필요합니다.

신속하고 한 번에 적은 수의 파일이 필요합니다.

cp 명령을 통해 .txt, .cpp 및 .h 확장자로 끝나지 않는 폴더의 모든 파일을 별도의 폴더로 이동해야 합니다.

이를 수행하는 기본 제공 방법이 있습니까? 아니면 스크립트를 작성해야 합니까?

답변1

그것은 모두 필요한 견고성에 달려 있습니다. 이러한 아이디어 중 일부(예: -print0)는 모든 시스템에서 사용할 수 없으므로 YMMV입니다.

신속하고 한 번에 적은 수의 파일이 필요합니다.

  1. mkdir .tmp
  2. mv *.txt *.cpp *.h .tmp
  3. mv * /separate_folder/
  4. mv .tmp/* .
  5. 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 매뉴얼 페이지를 참조하세요 .

관련 정보