2017-05-07 132 views
0

我有一組快照。每個快照駐留在accountname文件夾,每個快照被命名爲帶有日期的格式爲:YYYY-MM-DD-accountname基於文件夾名稱檢索比日期還早的文件夾

我怎樣才能找回「快照文件夾」它是老年人超過2天的名字嗎? (該2017-05-*目錄)

文件夾結構,如:

/home/snapshots 
    /home/snapshots/account1 
     /home/snapshots/account1/2017-05-01-account1 
     /home/snapshots/account1/2017-05-02-account1 
     /home/snapshots/account1/2017-05-03-account1 
     /home/snapshots/account1/2017-05-04-account1 
     /home/snapshots/account1/2017-05-05-account1 
     /home/snapshots/account1/2017-05-06-account1 
    /home/snapshots/account2 
     /home/snapshots/account2/2017-05-01-account1 
     /home/snapshots/account2/2017-05-02-account1 
     /home/snapshots/account2/2017-05-03-account1 
     /home/snapshots/account2/2017-05-04-account1 
     /home/snapshots/account2/2017-05-05-account1 
     /home/snapshots/account2/2017-05-06-account1 

比如......我想列出/home/snapshots/account1/2017-05-01通過/home/snapshots/account1/2017-05-04,因爲今天是2017年5月6日(美國),和副反之亦然爲account2

我想find /home/snapshots/ -type d -mtime +2 -exec -ls -la {} \;可以做的伎倆,但返回我的所有文件夾舊目錄超過2天以上......而加入maxdepth 1返回任何...

+0

如果你想在刪除時間大於2天時使用'find',你實際上要求刪除超過2天以前的文件** **(大於2歲,24小時以前)你實際上想要找到/ home -type d -name「snapshots」-mtime +2 -execdir rm -r'{}'+'(使用'execdir'代替'exec',在目標目錄中執行效率稍高) –

回答

1

繼續我上面的評論,你遇到問題的原因是你想搜索/home,然後選擇並刪除snapshots目錄,如果它們超過兩天。與-execdir,這將是

find /home -type d -name "snapshots" -mtime +2 -execdir rm -r '{}' + 

讓我知道如果你有問題。 (也沒有必要到內find使用ls -la,該-printf選項爲您提供完整的輸出格式控制不產卵多個獨立的子shell爲每個ls通話,看到man find

注:你應該引用'{}'保護對有空白的文件名等

編輯

對不起,我誤解你的問題,很顯然,如果你只是想刪除每個snapshots目錄的個子目錄,那麼/home/snapshots的搜索路徑是好的,然後您將包含account*/*account*指示符作爲@BroSlow正確捕獲下面。

+0

想' kevin'想刪除匹配'/ home/snapshots/account */* - account *'的目錄,而不是整個快照目錄。另外,你不需要引用'{}',shell不會進行擴展。 – BroSlow

+0

當我讀到這個問題時,我會遇到完全失讀症或雙極精神分裂症。你是對的 - 好的,在編輯中註明。 –

+0

是的,這也是我在問幾個啤酒之後提出想法的同時提出的問題...大聲笑 – Kevin

相關問題