对于在Unix系统上工作的任何人来说,删除目录都是一个常规过程。但是有时我们还需要先找到目录,然后再决定删除它。删除文件的一个障碍是进行递归删除,因为默认情况下,Unix系统不允许目录不为空的目录的删除。因此,在本文中,我们将看到如何递归查找和删除目录。
下面的命令首先使用find命令搜索所需的目录,然后执行“ rm”命令以使用递归选项和force选项以递归方式删除目录。该命令下面解释了该命令中使用的各种参数。
$find /path/to/search -name " Dir name to be deleted " -type d -exec /bin/rm -rf {} +
这些论点的含义如下。
-type d - restricts the search only to directories -exec - executes an external command, in this case it is rm –r {} + - appends the found files to the end of the rm command
xargs允许rm和mkdir之类的命令接受标准输入作为参数。因此,在这种情况下,我们首先使用find命令查找所需目录,然后通过将其作为xargs命令的参数提供给该目录进行操作。print0选项允许使用完整的目录路径,该路径可用于xrags命令。然后,我们以与上面的exec命令类似的方式应用rm命令。
$find /path/to/search -name " Dir name to be deleted " -type d -print0 | xargs -0 /bin/rm -rf "{}"