iT邦幫忙

0

[已解決]迴圈取LINUX特定目錄並刪除超過7天的檔案

已用 find /var/spool/maildir/*/cur -mtime +7 -exec rm -f {} ; 每日排程跑一次,感謝!
選大神最佳解答是因為大神先讓我了解萬用字元也可以這樣用
...................
/var/spool/maildir/user1/cur
/var/spool/maildir/user2/cur
/var/spool/maildir/user3/cur
.........
請問我如何透過指令自動刪除對應USER底下CUR目錄超過7天的檔案?
能想到的是方式大概是

ls /var/spool/maildir 可列表所有USER

用取得的每行USER目錄帶入 /var/spool/maildir/指定使用者/cur

刪除7超過七天資料 find /var/spool/maildir/指定使用者/cur -mtime +7 -exec rm -f {} ;

但指令語法不熟不知道如何寫出我想要的SCRIPT

froce iT邦大師 1 級 ‧ 2021-02-03 11:54:22 檢舉
拿你熟的語言做,不熟把他搞到熟為止才做。
不必一定要用shell script寫。

真的一定要,可以用find後面加 -exec來刪除。
https://www.unix.com/shell-programming-and-scripting/256445-how-can-i-list-files-above-5-days-old.html
https://blog.gtwang.org/linux/unix-linux-find-command-examples/
出事不負責。

2 個回答

3
raytracy
iT邦大神 1 級 ‧ 2021-02-03 12:55:54
最佳解答
/bin/bash -c "/bin/ionice -c2 -n7 /bin/find /var/spool/maildir/*/cur -mtime +7 -name "*" -print0 | /bin/xargs -0 -t /bin/rm -rf"
froce iT邦大師 1 級 ‧ 2021-02-03 12:58:43 檢舉

完全不依靠 $PATH 的寫法。XD

fireflybug iT邦研究生 5 級 ‧ 2021-02-03 13:52:06 檢舉

大神果然不拘小節,連小問題都能解決,原來可以用萬用字元替代阿,感恩

0
japhenchen
iT邦大師 1 級 ‧ 2021-02-03 14:10:36
sudo find /var/spool/maildir/user*/cur -mdate +7 -exec rm {} \;

/var/spool/maildir/user*/cur 可用萬用字元
-mdate +7 建立超過7天以上的檔案
-exec 執行後面的指令 ,我下的是剩除檔案 rm , {} 指find到的檔案帶過來當參數 \; 是exec的命令結尾

放在crontab 裡每天半夜執行一次就OK

fireflybug iT邦研究生 5 級 ‧ 2021-02-03 17:35:09 檢舉

謝謝您
/images/emoticon/emoticon07.gif

我要發表回答

立即登入回答