我是 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 目录。