예를 들어, 날짜가 다른 많은 파일이 포함된 디렉토리가 있고 날짜가 파일 이름과 함께 배치되는 경우입니다. 내 파일 이름 중 하나가 이고 tr_2017-12-05.html
파일 날짜가 2017-12-05
오늘 날짜보다 30일 이전인 경우 2018-01-10
이전 파일을 삭제해야 합니다. Linux 스크립트는 무엇입니까?
답변1
파일 이름에 실제 생성 날짜가 있으면 찾기를 사용하여 삭제하세요.
find /path/ -ctime +30 -exe rm -f {} \;
지난 30일 이내에 생성된 파일은 삭제됩니다.
답변2
이것은 당신에게 도움이 될 것입니다:
#!/bin/bash
directory=./
for file in $(find $directory -maxdepth 1); do
a='[^0-9]*([[:digit:]]{4}).([[:digit:]]{2}).([[:digit:]]{2})'
[[ $file =~ $a ]];
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}
# echo "Year=$year Month=$month Day=$day"
mydate=$year$month$day
if [[ $mydate ]]; then
[[ "$(date -d "$mydate" +'%s')" -gt "$(date -d "30 days ago" +'%s')" ]] &&
echo rm -i "$file"
fi
done
파일 목록이 예상과 일치 echo
하면 rm
.