2017-05-07 97 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

相关问题