我有这个:

ls */file
dir1/file dir2/file dir3/file

但我只需要第一个目录名,如下所示: dir1

是我干的:

IFS="/" read foo bar <<< "$(ls */file 2>/dev/null)"
echo $foo
dir1

它的工作原理,但现在我有一个问题 subshell 扩展过来 ssh.有没有更优雅的方式(没有 subshellssed)做到这一点?

如果没有,我会发布一个关于一个完全不同的问题的问题-扩展 subshells 结束 ssh.

有帮助吗?

解决方案

for F in */file; do
    D=${F%%/*}
    break
done

另一个:

F=(*/file); D=${F%%/*}

其他提示

试试

ls */file | cut -d"/" -f1

使用方法 / 作为分隔符。

您可以使用棘手的双引号!像这样:

LIST=`ls */file`
echo "$LIST" | cut -d/ -f1

echo "$LIST" | awk -F/ {'print $1'}

您可以使用内置的读取公告 -d 选项:

read -d '/' a < <(echo */file)
echo "$a"
dir1

如果您只需要您可以使用的文件夹的名称 :

$ls -1 | awk 'NR==n'

哪里 n=1 是第一个目录,您可以更改 n 以得到第n个目录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top