![find 中 -max深度 1 -min深度 1 的替代方案](https://linux22.com/image/137079/find%20%E4%B8%AD%20-max%E6%B7%B1%E5%BA%A6%201%20-min%E6%B7%B1%E5%BA%A6%201%20%E7%9A%84%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88.png)
我经常发现自己find
只搜索目录的第一代子目录,尤其是在替换*
.有没有比指定更方便的方法来做到这一点-maxdepth 1 -mindepth 1
?
我还应该使用其他工具吗?
答案1
如果您使用的是 shell,例如bash
您可以设置dotglob
shell 选项,让星号通配符*
匹配所有文件,而不仅仅是那些不以点字符开头的文件.
。
对于任何给定的目录,这三个示例都应返回同一组文件
示例1find . -mindepth 1 -maxdepth 1 -printf '%f\n'
示例2
dg=$(shopt -q dotglob)
shopt -s dotglob
echo *
[[ $dg -eq 1 ]] && shopt -u dotglob
实施例3
( shopt -s dotglob; echo * )