基于这个问题,
我试图只删除结果的第一个文件夹:
find * -type d | head -n1 | -exec rm -rf {} \;
但我收到此错误:
bash: -exec: command not found
怎么了?
基于这个问题,
我试图只删除结果的第一个文件夹:
find * -type d | head -n1 | -exec rm -rf {} \;
但我收到此错误:
bash: -exec: command not found
怎么了?
您可以在使用or
-quit
后使用:-delete
-exec
删除
find
命令的第一个结果:或者
后者将找到隐藏文件夹。
对于排序后删除第一个结果:
对于数字排序,使用
sort -zn
.pLumo在他们的回答中充分给出了一些很好的替代解决方案。我提供了一种完全不同的方法。
您会注意到,该
find
命令(您使用它来*
描述顶级搜索路径的方式)仅真正用于查找*
扩展为.您也可以使用 shell 循环来执行此操作,这会使代码更易于阅读并查看其作用:
此循环假定它在
bash
shell 中运行,它遍历所有匹配的名称*
(包括隐藏名称)。循环的主体测试当前名称是否是目录(不是目录的符号链接),如果是,则在退出循环之前递归地删除目录。使用更简单的命令可以在
zsh
shell中产生类似的效果这将删除
*
展开到的第一个目录。globbing 限定符(D/[1])
将 的匹配限制*
为仅目录 (/
),但包括隐藏名称 (D
),并且仅返回第一个匹配名称 ([1]
)。如果当前目录中没有目录,您会从 shell 收到“找不到匹配项”错误消息。这似乎很危险,但您可以尝试:
对我来说,这段代码是:
代码:
寻找 。-类型 f !-名称“*.gz”| 头-n 1 | xargs rm -rf {} ;