파일 이름이 생성 날짜인 파일이 있는 경우:
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