删除所有文件和目录,超过5天的,除了一个文件

问题描述:

使用找到命令我想删除位于/home/ubuntu/pub/sfmc/Downstream所有目录,其超过5天铭记的是:删除所有文件和目录,超过5天的,除了一个文件

  1. 目录内的所有文件也应该被删除。
  2. 我们不应删除文件/home/ubuntu/pub/sfmc/Downstream/download.sh,即使它已超过5天。

这里是脚本我有今天,但我认为它还会删除上面的,因为它没有例外

#!/bin/bash 
find /home/ubuntu/pub/sfmc/Downstream -mtime +5 -type d -exec rm -rv {} + 

的download.sh文件有没有办法让我们做的不是要加这个例外需要编写一个循环?

试用一下这个:

find /home/ubuntu/pub/sfmc/Downstream/* ! -name "download.sh" -mtime +5 -type d -exec rm -rv {} + 

通知:

! -name "download.sh" 

这应该做的伎俩。

+0

这将避免在任何地方子目录删除'download.sh'文件,虽然,这可能是一个问题。我想你应该使用'-path'测试来避免这种情况。 – Aaron

+0

我的整个'/ home/ubuntu/pub/sfmc/Downstream'文件夹现在已被删除! – Disasterkid

+0

@Disasterkid你的意思可能是你的'/ home/ubuntu/pub/sfmc/Downstream'目录中的内容 – nbari

我猜你所面临的问题是,当你这样做,

find /home/ubuntu/pub/sfmc/Downstream 

它结束了上市/home/ubuntu/pub/sfmc/Downstream以及再rm命令删除主目录中。你可以做的是

find /home/ubuntu/pub/sfmc/Downstream/* -mtime +5 -type d -exec rm -rv {} + 

*防止父母上市。


或者总之,你也可以写,

$ find /home/ubuntu/pub/sfmc/Downstream -mindepth 1 -mtime +5 -type d -delete 
  • -mindepth 1将舍弃父文件夹。
  • -type d仅选择地目录
  • -delete删除选定的节点
+0

@Aaron我猜这个问题是别的,因为'type'应该阻止列表中的'download.sh'。我已经更新了答案。希望现在有意义。 – nu11p01n73R

+0

你是对的,我没有这样做。你现在的答案看起来不错,现在OP找到一种方法来恢复他丢失的文件... – Aaron

+0

和异常情况('download.sh'文件)? – Disasterkid

这应该为你工作。

- 不是-path用于忽略的文件/目录中找到

find /home/ubuntu/pub/sfmc/Downstream/* -not -path '/home/ubuntu/pub/sfmc/Downstream/download.sh' -mtime +5 -type d -exec rm -rv {} +