정규식이나 이름을 사용하여 이름으로 범위 내의 파일 찾기

정규식이나 이름을 사용하여 이름으로 범위 내의 파일 찾기

"screenshot-2010-13-12.jpg"와 같은 이름의 2008년 스크린샷이 여러 개 있습니다. 2010년부터 2019년까지의 스크린샷을 복사해야 합니다. -name 및 -regex의 다양한 옵션을 시도했지만 방법을 찾을 수 없습니다. 정규식의 유일한 성공은 형식별로 찾는 것뿐입니다.

답변1

형식을 엄격하게 준수하려면 다음 명령을 사용할 수 있습니다.

find . -name "screenshot-201[0-9]-??-??.jpg" -type f

로 시작하는 이름 screenshot-201, 숫자, 대시, 두 문자, 대시, 두 문자 및.jpg

답변2

원하는 날짜 범위로 승격하려면 zsh다음을 수행하세요.

cp screenshot-????-??-??.jpg(.e['
  [[ $REPLY >= screenshot-2010-02-12.jpg &&
     $REPLY <= screenshot-2019-09-21.jpg ]]']) /some/dir/

또는:

cp screenshot-????-??-??.jpg(.e['
  [[ ${REPLY//[^0-9]} = <20100212-20190921> ]]']) /some/dir/

.예를 들어, 2010-02-12에서 2019-09-21 범위의 일반(with) 파일을 복사합니다.

현재 작업 디렉터리에 없지만 모든 수준의 하위 디렉터리에서 검색해야 하는 경우:

cp -i -- **/screenshot-????-??-??.jpg(.e['
  [[ $REPLY:t >= screenshot-2010-02-12.jpg &&
     $REPLY:t <= screenshot-2019-09-21.jpg ]]']) /some/dir/

( -i디렉터리에서 동일한 이름을 가진 여러 파일이 발견될 위험을 줄이기 위해 여기에 추가합니다.)

관련 정보