XIN LƯU Ý RẰNG TÔI CÓ THỂ KHÔNG SỬ DỤNG 'tìm' TRONG MỤC TIÊU MÔI TRƯỜNGLàm cách nào để tìm và xóa tệp dựa trên ngày trong tập lệnh shell linux mà không tìm thấy?
tôi cần phải xóa tất cả các file hơn 7 ngày tuổi trong một kịch bản shell Linux. SOmething like:
FILES=./path/to/dir
for f in $FILES
do
echo "Processing $f file..."
# take action on each file. $f store current file name
# perhaps stat each file to get the last modified date and then delete files with date older than today -7 days.
done
Tôi có thể sử dụng 'stat' để làm điều này không? Tôi đã cố gắng sử dụng
find *.gz -mtime +7 -delete
nhưng phát hiện ra rằng tôi không thể sử dụng tìm thấy trên hệ thống mục tiêu (không có sự cho phép cho người sử dụng cron và điều này không thể thay đổi). Hệ thống đích là Redhat Enterprise.
Các tên tập tin được định dạng như thế này:
gzip>/mnt/target03/phần còn lại-of-path/web/backups/DATABASENAME_ date "+%Y-%m-%d"
gz
Tôi có cố gắng sử dụng mã này, nhưng chỉ nhận được kết quả này: 1325559634 lt 1324944000 1325559634 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 1325559635 lt 1324944000 – codecowboy
Các echo "rm -f $ f" không bao giờ có vẻ chạy. Các tệp được đặt tên như thế này - eeSwap_2011-12-20.gz. Regex có bắt được tên tập tin này một cách chính xác không? – codecowboy
Hóa ra ts = 'date -d $ date | date + "% s" 'phải là ts =' date -d "$ date" + "% s" 'Tập lệnh sau đó hoạt động – codecowboy