30일이 지난 파일을 삭제하는 방법

30일이 지난 파일을 삭제하는 방법

파일 이름이 생성 날짜인 파일이 있는 경우:

temp_30042019
temp_15042019
temp_10042021
temp_20022020
temp_21102022
temp_22102022
temp_01112022

파일 이름을 오늘 현재 날짜와 비교하는 방법

$ echo `date +"%d%m%Y"`
#output:
01112022

파일 이름 날짜가 30일보다 오래된 경우 삭제됩니다. 나는 결국 얻을 수 있기를 바랍니다

temp_21102022
temp_22102022
temp_01112022

답변1

bash스크립트 사용 :

#!/usr/bin/bash

older30days=$(date --date 'now - 30 days' '+%Y-%m-%d')

echo Checking files before $older30days

for file in ./temp_*; do
   cdate="$(echo ${file#*_} | awk -v FS='' -v OFS='-' '{print $5$6$7$8,$3$4,$1$2}')"

   if [[ $cdate < $older30days ]]; then
      echo "Removing file: " $file
      rm $file
   fi
done

위 코드를 인쇄할 필요는 없지만 echo스크립트에서 실제로 무슨 일이 일어나고 있는지 이해하는 데 유용할 것입니다.

이것을 사용하여 echo ${file#*_} | awk -v FS='' -v OFS='-' '{print $5$6$7$8,$3$4,$1$2}파일 이름의 날짜를 유효한 날짜로 구문 분석하여 if사용 조건을 비교할 수 있습니다. 예를 들어 다음과 같은 파일 이름을 사용합니다.

temp_15042019

위의 코드를 사용하여 다음과 같이 구문 분석합니다.

2019-04-15 #YYYY-MM-DD

관련 정보