如何删除特定文件夹下的文件和文件夹

如何删除特定文件夹下的文件和文件夹

众所周知,要删除文件,我们可以使用这个安全选项

  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

相关内容