파일 이름의 x 문자를 cp와 일치시키는 방법은 무엇입니까?

파일 이름의 x 문자를 cp와 일치시키는 방법은 무엇입니까?

cp다음을 사용하여 부분적으로 동적 이름을 가진 파일을 복사해 보았습니다 .

cp google71bg2z2850dafxa3.html DESTIONATION

원칙적으로 google파일 이름 부분은 일관성이 있지만 71bg2z2850dafxa3파일 이름의 (16자) 부분은 동적이며 필요하지 않으면 어떤 스크립트에서도 수동으로 변경하고 싶지 않기 때문에 정규식을 사용하는 것을 고려했습니다.

man cp"정규식" 또는 "정규식"에 대한 데이터를 찾지 못했습니다 .
또한 cp x{2} DESTINATION이름이 지정된 파일을 시도했지만 x12실패했습니다.

파일 이름의 x 문자를 cp와 일치시키는 방법은 무엇입니까?

16자를 정규 표현식과 일치시키려면 어떻게 해야 할까요?

답변1

이는 아마도 단순화된 것일 수 있지만 관심 있는 모든 파일이 디렉토리에 있고 파일 이름에 공백이 없는 경우 다음을 수행할 수 있습니다.

#!/bin/bash
destination="/wherever"
for i in *; do
    if echo "${i}" | grep -q -E '^google.{16}\.html$'; then
        cp "${i}" "${destination}"
    fi
done

grep여기서는 정규식 일치를 사용합니다 . ^파일 이름은 ( ) 로 시작 google하고 그 뒤에 16자( .{16})가 오고 마지막으로 .html이름 끝( )이 옵니다.$

Bash는 정규식 일치도 지원하므로 다음과 같은 작업도 수행할 수 있습니다.

#!/bin/bash
destination="/wherever"
for i in *; do
    if [[ "${i}" =~ ^google.{16}\.html$ ]]; then
        cp "${i}" "${destination}"
    fi
done

여기의 정규식은 이전 예제와 동일합니다.

관련 정보