我想只列出指定路径中的目录(ls没有这样的选项)。 另外,这可以用单行命令完成吗?
当前回答
下面是另一个显示链接目录的解决方案。 我稍微喜欢它,因为它是“正常”ls -l输出的子集:
ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
其他回答
对于Bash脚本,我通常会尝试以一种不执行任何外部程序的方式来执行(grep, sed, ls,…)
for i in * ; do
if [[ -d "$i" ]] ; then
echo "$i"
fi
done
或者作为一条紧凑的直线
for i in * ; do [[ -d "$i" ]] && echo "$i" ; done
如果我需要重用目录列表,我通常会把它放在一个数组中:
DIRS=() ; for i in * ; do [[ -d "$i" ]] && DIRS+=("$i") ; done
然后使用"${DIRS[*]}"或"${DIRS[@]}"展开数组,如
for dir in "${DIRS[@]}" ; do
echo "Do something with directory $dir"
done
这种方法的另一个好处是它非常健壮。它可以处理目录名称中的空格和换行符。
下面是另一个显示链接目录的解决方案。 我稍微喜欢它,因为它是“正常”ls -l输出的子集:
ls -1d */ | rev | cut -c2- | rev | xargs ls -ld --color=always
要只列出指定路径下的目录,只需键入
ls -l | grep drw
您可以使用带有d开关的tree命令来实现这一点。
% tree -d tstdir
tstdir
|-- d1
| `-- d11
| `-- d111
`-- d2
`-- d21
`-- d211
6 directories
更多信息请参见人树。
find . -maxdepth 1 -type d -name [^\.]\* | sed 's:^\./::'
推荐文章
- 在命令行中使用Firefox截取完整页面的截图
- 文件中最长的一行
- 如何在父进程退出后使子进程死亡?
- [: shell编程中的意外操作符
- 如何在变量中存储标准错误
- Unix列表命令'ls'可以输出数值chmod权限吗?
- 在Unix中,我可以在一个目录中运行'make'而不首先cd'到该目录吗?
- 如何在Python中实现常见的bash习语?
- 如何通过docker运行传递参数到Shell脚本
- 快速unix命令显示文件中间的特定行?
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 只使用md5sum获取哈希值(没有文件名)
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 使用sh shell比较字符串