사용자 입력을 사용하여 이전 날짜를 계산하는 스크립트

사용자 입력을 사용하여 이전 날짜를 계산하는 스크립트

로그 파일이 많아 프로덕션 디렉터리에서 아카이브 디렉터리로 이동해야 합니다. 생성일 이전에 이동해야 합니다. 예를 들어, 2016년 1월의 파일은 2016-01이라는 레이블이 붙은 아카이브 디렉터리로 이동됩니다. 현재 다음을 입력하여 수동으로 이 작업을 수행합니다.

$ find /creation/directory/filename -daystart -mtime vXX -exec mv "{}" /destination/directory \;

vXX파일 선택이 시작된 이후의 일수는 어디에 있습니까(즉, 10일 전에 수정된 파일의 경우 +10). 일수는 월말이 언제인지 또는 특정 디렉터리가 가득 차는 경우에 따라 변경될 수 있습니다.

나는 사용자에게 입력(일수)을 요청하는 bash 스크립트를 작성한 다음 이를 검색 및 이동을 수행하는 스크립트에 통합하려고 합니다. date 명령을 사용하고 사용자 입력을 변수로 사용하는 방법에 문제가 있습니다.

이것이 명령줄에서 필요한 것을 얻는 데 효과적이라는 것을 알고 있지만 $ date -d 'now - vXX days'이를 스크립트에 넣는 방법을 모르겠습니다.

나는 몇 가지 변형을 시도했습니다.

days=0
echo -n "Enter number of days back to begin count > "
read days
echo "Calculated date is "
date -d 'now - ($days) days'

저는 Bash에서 아무것도 작성해본 경험이 거의 없고 다른 스크립트로는 괜찮습니다(물론 모든 사람의 도움 덕분에!). 하지만 변수 내의 변수와 사용자 입력을 활용하는 것은 정말로 나를 죽입니다. 어떤 도움이라도 대단히 감사하겠습니다!

(저는 RHEL 5를 사용하고 있습니다.)

답변1

이 스크립트는 올바른 방향으로 여러분을 안내할 것입니다.

#!/bin/bash

read -p "Enter number of days back to begin count > " days

echo "Calculated date is "
date -d 'now - '"$days"' days'

find /creation/directory/filename -daystart -mtime +"$days" -exec mv "{}" /destination/directory \;

관련 정보