使用 find 时需要跳过 lost+found

使用 find 时需要跳过 lost+found

我是 Ubuntu 新手,没有太多使用 Linux/Unix 的经验,所以请耐心等待我尝试解决这个问题。

我有一个摄像系统,可以录制视频并截屏,然后将其存储在文件夹中。问题是新文件不会覆盖旧文件,因此文件系统会填满,所有新文件都会被丢弃。

因此,我在 Ubuntu GUI 中安装了计划任务,并创建了一个每天运行的任务。任务如下:

find /media/dvr/* -type f -mtime 0 -exec rm -rf {} \; 

为了测试目的,我已将其-mtime设置为,如果我能让它工作的话,0它将被设置为。7

我遇到的问题是/dvr文件夹中有一个 lost+found 文件夹。当它到达该文件夹时,它说我没有权限查看它,并且它从未完成搜索。我使用 sudo 进入并更改所有权和 rwx 权限,但这仍然无济于事。

有没有办法通过使用 find 来完成我想要做的事情?有没有更有效的方法来清理/dvr/文件夹?

就像我说的,我是新手,正在努力变得更好。任何帮助都将不胜感激!

答案1

做就是了:

find /media/drv -name lost+found -prune -o -type f -exec echo '{}' ';'

一般来说,将 stderr 重定向到 /dev/null 是一个非常糟糕的主意。stderr 的全部目的是显示意外错误。如果您预计会出现某个错误,那么请构建命令以避免它。

答案2

find据我所知,该命令不会因权限问题而退出,它可能只是因为其他原因找不到任何文件。我建议消除 stderr,这样您就不会在输出中收到误导性消息,并使用echo替换来测试该命令rm -rf,即

find /media/drv/ -type f -mtime 7 -exec echo {} \; 2> /dev/null

这应该会列出最终版本中将被删除的文件rm -rf。如果您确实想跳过lost+found目录(这应该不是必需的),请使用:

find /media/drv/ -type f -mtime 7 -not -wholename "*lost+found*" -exec echo {} \; 2> /dev/null

答案3

正确设置权限应该可以做到。ls -ld /media/dvr/lost+found说什么?还要删除 /media/dvr/ 末尾的 *。您希望 find 在 /media/dvr/ 中开始搜索,当您添加 * 时,shell 会将该字符串替换为它在 /media/dvr/ 中找到的每个文件的名称。

您也可以删除 lost+found 目录。

相关内容