我经常发现自己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 * )