作者 主題: 有什麼辯法找出30日之的檔案,再將之刪除??  (閱讀 6111 次)

0 會員 與 1 訪客 正在閱讀本文。

alantang888

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
我試過用"find . -mtime +30 -print |xargs rm -rf" 還找到很多幾個月前的檔案,用
"find /data/ -mtime +45 |xargs rm -rf"又會把data內的東西都全部刪除了,不知怎麼辦。

請各位高手指教,謝謝

shadow

  • 活潑的大學生
  • ***
  • 文章數: 365
    • 檢視個人資料
先用
find /data/ -type d -mtime +45
看看找出來的檔案是不是你要刪除的
如果確定是的話
再用
find /data/ -type d -mtime +45 | xargs rm -rf
把檔案刪掉吧

hongbin

  • 憂鬱的高中生
  • ***
  • 文章數: 101
    • 檢視個人資料
sorry,仔細看標題後,才了解意思..
試試把指令改成這樣子,應該就可以了
find /data/* -mtime -30  | xargs rm -rf

alantang888

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
引述: "hongbin"
sorry,仔細看標題後,才了解意思..
試試把指令改成這樣子,應該就可以了
find /data/* -mtime -30  | xargs rm -rf


剛剛試了,用了rm- rf 的話,所有資料都沒有了,但只用rm -f 的話,還有很多30日前的檔案存在........真不知要怎樣攪

alantang888

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
引述: "jou"
man 一下 rm 的 -r 選項的作用是什麼,您就知道為什麼有的沒刪到了。

find /data/ -type f -mtime +30 -exec rm -f {} \;

還有,是要刪 30 日之前還是之後的檔案啊?一路看下來有點混亂。



可以了,謝謝。我是要刪除30日之前的檔案的,謝謝。我只知道用-r才可把資料夾刪去,但man內的還不明白。

akong

  • 鑽研的研究生
  • *****
  • 文章數: 523
    • 檢視個人資料
    • http://www.aspa.idv.tw
以下是我的做法
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {} \;
我有先搜尋過
確定找出來的都是超過60天以上
您可以試試

alantang888

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
引述: "akong"
以下是我的做法
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {} \;
我有先搜尋過
確定找出來的都是超過60天以上
您可以試試


謝謝,我想問一下,最後為什麼要加上 \; 的??看不明白,我還是新手呀 :oops:

謝謝

harrier

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 1856
  • 性別: 男
    • 檢視個人資料
    • 國屬武裝兵
引述: "alantang888"
引述: "akong"
以下是我的做法
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {} \;
我有先搜尋過
確定找出來的都是超過60天以上
您可以試試

謝謝,我想問一下,最後為什麼要加上 \; 的??看不明白,我還是新手呀 :oops:
謝謝


不知...   @@"

\ -> 換行繼續
; -> 完成前面指令後,繼續執行下一個指令
...90Net(90:1200/1203),GameNET(99:700/707),ALLNet(92:9200/3111),InfoNet(30:100/103)..MaximusCBCS(浮懷),AirNet,TenderNet,StormNet,FidoNet...
<<- www.nas.vg ->>

alantang888

  • 懷疑的國中生
  • **
  • 文章數: 75
    • 檢視個人資料
謝謝

rickie

  • 可愛的小學生
  • *
  • 文章數: 6
    • 檢視個人資料
引述: "harrier"
引述: "alantang888"
引述: "akong"
以下是我的做法
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {} \;
我有先搜尋過
確定找出來的都是超過60天以上
您可以試試

謝謝,我想問一下,最後為什麼要加上 \; 的??看不明白,我還是新手呀 :oops:
謝謝


不知...   @@"

\ -> 換行繼續
; -> 完成前面指令後,繼續執行下一個指令


\ 的目的不是只是讓 ; escape 嗎?

要不然
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {} ;
會變成
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {}
; 分號分開
<空行>

然後
find /mnt/X_drive/Garbage/ -maxdepth 20 -type f -atime +60 -exec rm -f {}
找出來的幾個檔又變成.
rm -f <file1> rm -f <file2> ...
串成同一行了.

加個 \ escape 才能變成
rm -f <file1> ; rm -f <file2> ; ...

才會一個一個刪