Linux - 删除(仅)嵌套目录中的文件

标签 linux bash

我有一组用户文件夹,他们可以在其中保存 PDF。我想创建一个 cron 作业,它将删除所有嵌套目录中超过一周的所有文件(仅限文件,而不是目录)。

所以,我的目录结构如下所示:

users
│  index.html
│
+---+ a-long-string-of-random-characters-1
|   │   file1.pdf
│   │   file2.pdf
│   
|
+---+ a-long-string-of-random-characters-2
│   │   file1.pdf
│   │   file2.pdf
|
|
...

我已经有大约 8 个目录。我需要删除 user 目录及其子目录中的所有 pdf 文件。

我使用以下命令删除旧的数据库备份:

00 06 * * * find /path/to/backups/* -mtime +14 -delete

有些部分非常明显。 +14 将变为 +7/* 将变为 /*.pdf

00 06 * * * find /path/to/users/*.pdf -mtime +7 -delete

但是子目录呢?

干杯

最佳答案

替换:

00 06 * * * find /path/to/users/*.pdf -mtime +7 -delete

与:

00 06 * * * find /path/to/users/ -type f -iname '*.pdf' -mtime +7 -delete

注释:

  1. find 将自动递归子目录。我们只需告诉它从 /path/to/users/ 开始,它就会递归地查找所有 users 子目录。

  2. 为了将搜索限制为常规文件,我们添加 -type f

  3. 为了将搜索限制为名称以 .pdf 结尾的文件,我们添加 -iname '*.pdf' (使用 -iname 使匹配不区分大小写,这通常是一个好主意)

  4. 在创建上述 cronjob 之前,请尝试:

    find /path/to/users/ -type f -name '*.pdf' -mtime +7
    

    这将显示哪些文件将被删除。如果您对此列表感到满意,则可以使用 -delete 再次运行它或创建 cronjob。

关于Linux - 删除(仅)嵌套目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566930/

相关文章:

linux - 我可以使用键盘快捷键在 Linux 上的 Matlab 中保存工作吗?

linux - 使用 cat 在管道之间弹跳角色

linux - 逐行读入文件并在另一个文件中搜索部分匹配的行

linux - 将经过处理的视频从 OpenCV 传递到 FFmpeg 以进行 HLS 流式传输 (Raspberry PI)

java - 如何将数据从bash脚本正确传递到java应用程序

linux - 配置多节点后我们可以使用单节点配置吗?我说的是hadoop

python - M2Crypto 没有安装在 venv 中,或者 swig 没有定义 __x86_64__ 这会破坏针对 OpenSSL 的编译

linux - 如何使 xterm 命令行像 vim 一样工作

linux - 在 Linux 中键入\或`后的子命令行

bash - 如何使用 shell 脚本判断 postgres 数据库表是否存在