删除所有文件和目录,超过5天的,除了一个文件
使用找到命令我想删除位于/home/ubuntu/pub/sfmc/Downstream
所有目录,其超过5天铭记的是:删除所有文件和目录,超过5天的,除了一个文件
- 目录内的所有文件也应该被删除。
- 我们不应删除文件
/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"
这应该做的伎俩。
我猜你所面临的问题是,当你这样做,
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
删除选定的节点
@Aaron我猜这个问题是别的,因为'type'应该阻止列表中的'download.sh'。我已经更新了答案。希望现在有意义。 – nu11p01n73R
你是对的,我没有这样做。你现在的答案看起来不错,现在OP找到一种方法来恢复他丢失的文件... – Aaron
和异常情况('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 {} +
这将避免在任何地方子目录删除'download.sh'文件,虽然,这可能是一个问题。我想你应该使用'-path'测试来避免这种情况。 – Aaron
我的整个'/ home/ubuntu/pub/sfmc/Downstream'文件夹现在已被删除! – Disasterkid
@Disasterkid你的意思可能是你的'/ home/ubuntu/pub/sfmc/Downstream'目录中的内容 – nbari