Bash는 패턴과 일치하는 파일을 새 폴더로 이동합니다.

Bash는 패턴과 일치하는 파일을 새 폴더로 이동합니다.

저와 비슷한 질문이 있다는 것을 알고 있지만 정규식을 전혀 이해하지 못하므로 이것이 새로운 질문입니다.

내 폴더에 파일이 잔뜩 있어요. _GLM_특정 패턴(""이 있는 패턴)과 일치하는 다른 폴더로 일부 파일을 이동하려면 Bash를 사용해야 합니다 . 소스 폴더가 호출 /SingleScale되고 대상 파일은 다음과 같습니다 /NotUsing. 파일 이름의 예는 다음과 같습니다.

/SingleScale/Leopardus wiedii_GLM_canhtglad_s4_mean.csv

나는 시도했다:

cp /SingleScale/*_GLM_*.csv /NotUsing/

답변1

주의하세요:

  • Bash에서는 *, cp... mvnot 과 같은 와일드카드를 사용합니다.일반적인 표현. 이건 카니발이야내부 패턴 매칭 시스템(세부 사항,세부정보 및 예시).
  • 파일 이름에 공백이 포함되어 있어도 괜찮지만 셸을 사용할 때 상황이 복잡해질 수 있습니다.
    • 공백 문자는 필드 구분 기호입니다.

      cp file1 file2 myDir
      

      파일은 다음과 같이 디렉터리 에 복사 file1되고 복사됩니다.file2myDir

      cp Leopardus wiedii_GLM_canhtglad_s4_mean.csv myDir
      

      Leopardus파일 이 없기 때문에 실패합니다 wiedii_GLM_canhtglad_s4_mean.csv.

    • 이 문제는 다음을 통해 해결될 수 있습니다.

      • 따옴표 사용(이 경우 간단한 따옴표나 큰 따옴표는 아무런 차이가 없습니다):

        cp 'Leopardus wiedii_GLM_canhtglad_s4_mean.csv' myDir
        

        단점은 와일드카드가 따옴표와 충돌한다는 것입니다.

      • 이스케이프된 공백 문자를 사용하여 \:

        cp Leopardus\ wiedii_GLM_canhtglad_s4_mean.csv myDir
        

그 외에는 명령이 괜찮아 보입니다( 실제로 파일을 이동하는 mv대신 사용하는 경우 제외). cp자세한 내용/오류 메시지가 있습니까?

관련 정보