Lưu ý: Mặc dù có câu trả lời từ jeff-schaller, nhưng nó phụ thuộc vào zsh
; vì vậy tôi muốn nhận được câu trả lời dựa trên Bash
.
Tôi muốn tạo một tập lệnh Bash để xóa các tệp cũ hơn một cách có điều kiện khỏi thư mục sao lưu.
Có 2 điều kiện để sao lưu 2 tệp riêng biệt:
1, Giữ bản sao mới nhất của Edge_Profile_*.tgz
, và xóa phần còn lại của Edge_Profile_*.tgz
chỉ khi chúng cũ hơn 5 ngày.
2, Giữ bản sao mới nhất của Firefox_Profile_*.tgz
, và xóa phần còn lại của Firefox_Profile_*.tgz
, không quan trọng họ bao nhiêu tuổi.
Đây là cách tôi sửa đổi câu trả lời AskUbfox này: https://askubuntu.com/a/933098/928088
Kịch bản:
#!/bin/bash
LOG_FILE="/home/admn/Cleanup.log"
TEMP_LOG="/tmp/Temp_Cleanup.log"
mv $LOG_FILE $TEMP_LOG
{
cd /home/admn/Downloads/Test;
echo "Nhật ký dọn dẹp:" `date`
find /home/admn/Downloads/Test/Edge_Profile_*.tgz -type f \( -mtime +5 -printf 'Y\t' -o -printf 'N\t' \) -printf '%A@\t% p\0' |
sắp xếp -zk2,2 | đầu -zn -1 | trong khi đọc -r -d '' cờ _ tập tin; làm \
trường hợp "$flag" trong
'Y') echo rm "$file"
;;
*) tiếng vang "bỏ qua tệp $ (quá mới)"
;;
esac;
xong
tiếng vang
tìm /home/admn/Downloads/Test/Firefox_Profile_*.tgz -type f \( -printf 'Y\t' -o -printf 'N\t' \) -printf '%A@\t%p\0' |
sắp xếp -zk2,2 | đầu -zn -1 | trong khi đọc -r -d '' cờ _ tập tin; làm \
trường hợp "$flag" trong
'Y') echo rm "$file"
;;
*) tiếng vang "bỏ qua tệp $ (quá mới)"
;;
thoát hiểm
xong
} &>> $LOG_FILE
con mèo $TEMP_LOG >>$LOG_FILE
lối ra;
Đầu ra trong logfile với tiếng vang
:
/usr/local/scripts/cleanup.sh
rm /home/admn/Downloads/Test/Edge_Profile_Jul_06_2021_00-35.tgz
rm /home/admn/Downloads/Test/Edge_Profile_Jul_07_2021_00-35.tgz
....
bỏ qua /home/admn/Downloads/Test/Edge_Profile_Jul_12_2021_00-35.tgz (quá mới)
bỏ qua /home/admn/Downloads/Test/Edge_Profile_Jul_13_2021_00-35.tgz (quá mới)
....
rm /home/admn/Downloads/Test/Firefox_Profile_Jul_01_2021_00-35.tgz
rm /home/admn/Downloads/Test/Firefox_Profile_Jul_02_2021_00-35.tgz
....
Đầu ra trong tệp nhật ký trong khi thực sự chạy tập lệnh mà không cần tiếng vang
:
/home/admn/Downloads/cleanup.sh: dòng 24: bỏ qua /home/admn/Downloads/Test/Edge_Profile_Jul_12_2021_00-35.tgz (quá mới): Không có tệp hoặc thư mục như vậy
/home/admn/Downloads/cleanup.sh: dòng 24: bỏ qua /home/admn/Downloads/Test/Edge_Profile_Jul_13_2021_00-35.tgz (quá mới): Không có tệp hoặc thư mục như vậy
....
Tổng số file trong thư mục: 20 file
1, Edge_Profile_*.tgz: Từ 06/07 đến 17/07: 12 file
2, Firefox_Profile_*.tgz: Từ 01/07 đến 08/07: 8 file
các vấn đề:
(1) tôi nghĩ kịch bản đang hoạt động nhưng tôi không chắc vì tôi đã sửa đổi hầu hết các phần mà không biết chuyện gì đang xảy ra.
(2) Xuất ra logfile:
Tôi thích đầu ra chính xác giống như vậy trong tệp nhật ký mà tôi nhận được tiếng vang
, ngoại trừ tên tệp (không có đường dẫn đầy đủ), như:
rm Edge_Profile_Jul_11_2021_00-35.tgz
bỏ qua Edge_Profile_Jul_12_2021_00-35.tgz (quá mới)
Hệ điều hành: Ubuntu MATE 21.04
Cảm ơn rất nhiều.