yyyy/mm/dd 형식으로 저장된 파일 찾기

yyyy/mm/dd 형식으로 저장된 파일 찾기

오전 1시에 실행되고 다음 yyyy/mm/dd 형식으로 어제와 오늘의 index.html을 생성하는 크론 작업이 있습니다.

-1일을 잡고 사용자에게 보내야 합니다. 어떻게 해야 하나요?

-bash-4.2$ find /var/lib/pgsql/scripts/outfile/ -type f -name index.html

/var/lib/pgsql/scripts/outfile/2022/06/29/index.html 
/var/lib/pgsql/scripts/outfile/2022/06/30/index.html

이 경우에는

/var/lib/pgsql/scripts/outfile/2022/06/29/index.html

Bash 스크립트를 사용하여 이 작업을 어떻게 수행할 수 있나요?

답변1

분명히 일련의 표현식이 필요합니다 yesterday( 2022/06/30귀하의 예에서는 오늘 가정).

date이는 (GNU) 또는 bash (+4.2) 자체에 의해 생성될 수 있습니다 date -d yesterday +%Y/%m/%d.

$ printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))"
2022/06/29

하루가 실제로 86400초이고 DST가 이를 방해하지 않는다고 가정합니다.

그러면 다음과 같은 파일의 전체 디렉터리가 표시됩니다.

dir='/var/lib/pgsql/scripts/outfile/'
name='index.html'
yest="$(printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))")"
file="$dir$yest/$name"

[[ -e "$file" ]] || exit 3

echo "$file"

cron이 사용된다는 점에 유의하십시오 sh( 가 아님 bash). 위의 스크립트를 사용 bash하거나 파일에 작성된 스크립트를 bash /path/to/scriptfilecron 에서 호출해야 합니다 sh.

관련 정보