众所周知,要删除文件,我们可以使用这个安全选项
find /path/to/directory/ -mindepth 1 -mtime +5 -delete
如果我们想删除 /path/to/directory/ 文件夹下的文件夹和文件怎么办?语法应该是什么?
删除选项无法删除不为空的文件夹。
find /var/tmp -type d -mindepth 1 -mtime +5 -delete
find: warning: you have specified the -mindepth option after a non-option argument -type, but options are not positional (-mindepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
find: cannot delete `/var/tmp/foreman-ssh-cmd-1b987fef-10ca-4204-bf4b-441f28a3db07': Directory not empty
find: cannot delete `/var/tmp/foreman-ssh-cmd-2687d337-2b60-4f20-b581-a70807c22cb9': Directory not empty
find: cannot delete `/var/tmp/foreman-ssh-cmd-faedbb3a-7756-4c96-8a40-a4a2001b5fb3': Directory not empty
答案1
您尚未使用任何-type
选项,因此find
将删除 ( -delete
) 与所提供的条件(正是此处)匹配的所有内容-mindepth 1 -mtime +5
,无论是文件还是目录(如果为空)或其他任何内容。
如果您只想删除空目录:
find /path/to/directory/ -mindepth 1 -type d -mtime +5 -delete
请注意,最好在实际删除之前先查看要删除的文件,删除-delete
:
find /path/to/directory/ -mindepth 1-type d -mtime +5
为了完整起见,如果您只想搜索文件和目录,请在 中插入 OR 结构find
:
find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5
如果您还想删除不为空的目录,请rm
在-exec
操作中使用:
find /path/to/directory/ -mindepth 1 \( -type f -o -type d \) -mtime +5 -exec rm -r {} +
-f
如果需要的话添加rm
。