Cách đây một thời gian, tôi đã viết một kịch bản di chuyển các tệp và thư mục từ Tải xuống
đến .Tải xuống
nếu chúng cũ hơn 3 ngày và xóa chúng khỏi thư mục này sau 30 ngày. Nó hoạt động tốt, nhưng chỉ dành cho các tệp không có khoảng trắng.
Tôi đã điều tra và thấy rằng tìm thấy
lệnh mà tôi sử dụng trong tập lệnh không hoạt động như tôi mong đợi đối với bất kỳ tệp hoặc thư mục nào có dấu cách trong tên của chúng.
Đây là những gì tìm thấy
làm:
tôi mong đợi để xem tìm thấy
lệnh cũng tìm các tệp có khoảng trắng.
Đây là kịch bản:
#! /bin/bash
# đặt -x
xuất HIỂN THỊ =: 0,0
# true - xóa, khác - di chuyển
quy trình hàm(){
nếu [ "$2" = "XÓA" ]; sau đó
rm -r "$1" && thông báo-gửi "$3 $1 đã xóa!"
khác
mv "$1" "../.Tải xuống/$1" && thông báo-gửi "$3 $1 đã chuyển sang ~/.Tải xuống/$1!"
fi
}
# xóa thư mục rỗng
cho emptyDir trong `find ~/Desktop/ ~/Downloads/ -empty -type d`; làm
thông báo-gửi "Directoy $emptyDir đã bị xóa, vì trống!"
xong
tìm ~/Máy tính để bàn/ ~/Tải xuống/ -empty -type d -delete
# xóa/di chuyển tập tin/thư mục cũ
nếu [ -z "$1" ] || [ "${1,,}" != "xóa" ] && [ "${1,,}" != "di chuyển" ]; sau đó
echo "Cho dưới dạng chế độ tham số ( xóa / di chuyển )"
lối ra
fi
nếu [ "${1,,}" == "xóa" ]; sau đó
ngày=30
đường dẫn = ".Tải xuống"
chế độ = "XÓA"
khác
ngày=2
đường dẫn = "Tải xuống"
chế độ = "DI CHUYỂN"
cr
nếu [ ! -d "~/.Tải xuống" ]; sau đó
mkdir -p ~/.Downloads
fi
fi
cd ~/$path
cho phần tử trong *
làm
nếu [ -d "$element" ]; sau đó
if [ $(find "$element" -type f -mtime -$day | wc -l) -eq 0 ]; sau đó
xử lý "$element" "$mode" "Directory"
fi
khác
if [ $(find `pwd` -name "$element" -mtime +$day | wc -l) -gt 0 ]; sau đó
xử lý "$element" "$mode" "File"
fi
fi
xong
Tôi vui lòng yêu cầu bạn cho tôi biết những gì tôi có thể làm sai.
Cảm ơn trước!