如何在 execv 中删除其他位置的所有目录但不删除文件?

如何在 execv 中删除其他位置的所有目录但不删除文件?

假设我位于主目录,有一个名为“Apple”的目录,该目录有 2 个目录(假设我不知道它们的名称),其中包含内容和几个文件。我在家里打开终端,我想删除“Apple”中的这两个目录,而不使用 cd。

我不能使用'rm -r home/Apple/*/'我也不能使用'rmdir 主目录/Apple/*'

帮助?

答案1

我假设您所说的“主目录”是指您的主目录,即不带参数~执行后最终得到的目录cd,而不是目录/home

您有两个~/Apple要删除的目录,我们将它们称为dir1dir2。假设您还有其他不想删除的目录,您可以使用

rm -rf ~/Apple/dir1 ~/Apple/dir2

删除这两个目录及其所有内容。如果您位于主目录中,则可以省略~/该命令中的两个路径名。

如果这些是仅有的目录~/Apple,那么你可以使用

rm -rf ~/Apple/*/

删除Apple主目录中该目录的所有子目录。通配模式*/只能解析为目录,因此只要使用该尾部斜杠,非目录Apple就不会受到影响。同样,~/如果您位于主目录中,则可能会被忽略。

显然,您应该在正确备份的数据上进行测试,以便在由于输入错误而删除太多数据时能够恢复它。

答案2

您可以find直接在 Apple 内部查找所有目录,然后将其删除

find home/Apple -type d -maxdepth 1 -mindepth 1 -exec rm -rf {} \;

相关内容