我想这样做在击:
- 在当前目录中,找到包括在名称为“foo”的第一个文件夹
我一直在玩弄find命令,但有点困惑。 有什么建议?
我想这样做在击:
我一直在玩弄find命令,但有点困惑。 有什么建议?
您可以使用-quit
的选项find
:
find <dir> -maxdepth 1 -type d -name '*foo*' -print -quit
pattern="foo"
for _dir in *"${pattern}"*; do
[ -d "${_dir}" ] && dir="${_dir}" && break
done
echo "${dir}"
这比提供,因为其他的shell更好的解决方案
${dir}
为空) =~
运营商(如果你需要这取决于你的模式) find
) 例如:
dir1=$(find . -name \*foo\* -type d -maxdepth 1 -print | head -n1)
echo "$dir1"
或(为了更好的壳溶液看到阿德里安Frühwirth的答案)
for dir1 in *
do
[[ -d "$dir1" && "$dir1" =~ foo ]] && break
dir1= #fix based on comment
done
echo "$dir1"
要么
dir1=$(find . -type d -maxdepth 1 -print | grep 'foo' | head -n1)
echo "$dir1"
编辑头-N1基于@ hek2mgl评论
接下来根据@ chepner的评论
dir1=$(find . -type d -maxdepth 1 -print | grep -m1 'foo')
要么
dir1=$(find . -name \*foo\* -type d -maxdepth 1 -print -quit)