이름에서 ~(Nov1)부터 ~(Dec1)까지의 날짜를 가져오는 파일을 전송하는 쉘 스크립트

이름에서 ~(Nov1)부터 ~(Dec1)까지의 날짜를 가져오는 파일을 전송하는 쉘 스크립트

좋아, 이 쉘 스크립트는 복잡해 보일 수도 있지만 이를 달성하는 방법을 모르겠습니다.

그래서 여기에 요구 사항이 있습니다.

여기에 이미지 설명을 입력하세요

위의 파일을 친절하게 기록해 두십시오.

영화명은 다음과 같습니다.

Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls

그래서 저는 이 파일들을 다른 서버에 복사하는 스크립트를 만들고 싶습니다. 하지만 끝에 있는 숫자는 해당 파일의 날짜입니다. 따라서 파일 1의 20200120은 2020년 1월 20일에 생성되었음을 의미합니다.

그래서 기본적으로 저는 입력을 2020/01/20 또는 20200120으로 받아들이는 스크립트를 만들고 싶습니다.에게2020년 1월 25일 또는 20200125이고 모든 파일을 동일한 이름의 다른 서버에 복사합니다.

명령에서 scp, sftp 또는 rsync를 복사하는 데 무엇이든 사용할 수 있습니다.

기본적으로 날짜부터 종료 날짜까지의 스크립트를 생성하고 모든 파일을 다른 서버에 복사합니다.

솔직히 말해서 그게 가능한 일인지도 모르겠습니다.

하지만 여러분이 그러한 해결책을 알 수 있다면 정말 도움이 될 것입니다.

감사합니다. 사가르 만달

답변1

내가 당신을 올바르게 이해한다면 :

# Here you set the range of dates
from="20200121" 
to="20200125"
for f in *.xls; do 
  [[ $(date -d "${f:6:8}" +%s) -ge $(date -d "$from" +%s) ]] &&
  [[ $(date -d "${f:6:8}" +%s) -le $(date -d "$to" +%s) ]] &&
  echo "$f in range" || # Here your actions
  echo "$f not in range" 
done

산출:

Meter_20200120100846.xls not in range
Meter_20200121100846.xls in range
Meter_20200122100846.xls in range
Meter_20200123100846.xls in range
Meter_20200124100846.xls in range
Meter_20200125100846.xls in range

답변2

date 명령은 당신이 찾고있는 것입니다

$ date -d 1/25/2020 +%Y%m%d
20200125

-d mm/dd/yyyy - 명령에 입력 날짜를 제공합니다.

+%Y%m%d - 원하는 결과가 무엇인지.

  • %Y - 4자리 연도
  • %m - 두 자리 숫자의 월
  • %d - 두 자리 숫자로 된 달의 날짜입니다.

관련 정보