좋아, 이 쉘 스크립트는 복잡해 보일 수도 있지만 이를 구현하는 방법을 모르겠습니다.
그래서 그것이 요구 사항입니다.
위 문서를 참고하시기 바랍니다.
파일 이름은 다음과 같습니다.
Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls
그래서 이 파일을 다른 서버에 복사하는 스크립트를 만들고 싶습니다. 하지만 여기에 문제가 있습니다. 마지막 숫자는 파일 날짜입니다. 따라서 파일 1의 20200120은 2020년 1월 20일에 생성되었음을 의미합니다.
그래서 기본적으로 저는 입력을 20/01/2020 또는 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
- 해당 월의 두 자리 날짜입니다.