该命令列出当前路径下的目录:
ls -d */
模式*/到底做什么?
我们如何在上面的命令中给出绝对路径(例如ls -d /home/alice/Documents),只列出该路径下的目录?
该命令列出当前路径下的目录:
ls -d */
模式*/到底做什么?
我们如何在上面的命令中给出绝对路径(例如ls -d /home/alice/Documents),只列出该路径下的目录?
当前回答
*/是一个匹配当前目录中所有子目录的模式(*将匹配所有文件和子目录;/将其限制为目录)。类似地,要列出/home/alice/Documents下的所有子目录,请使用ls -d /home/alice/Documents/*/
其他回答
*/是一个匹配当前目录中所有子目录的模式(*将匹配所有文件和子目录;/将其限制为目录)。类似地,要列出/home/alice/Documents下的所有子目录,请使用ls -d /home/alice/Documents/*/
一个当前目录的普通列表,它将是:
ls -1d */
如果你想要整理干净:
ls -1d */ | cut -c 1- | rev | cut -c 2- | rev | sort
记住:大写字符在排序中有不同的行为
有四种方法可以做到这一点,每种方法都有不同的输出格式
1. 使用回声
例如:echo */, echo */*/ 以下是我得到的:
cs/ draft/ files/ hacks/ masters/ static/
cs/code/ files/images/ static/images/ static/stylesheets/
2. 只使用ls
例如:ls -d */ 这就是我得到的答案:
cs/ files/ masters/
draft/ hacks/ static/
或者作为列表(包含详细信息):ls -dl */
3.使用ls和grep
示例:ls -l | grep "^d" 以下是我得到的:
drwxr-xr-x 24 h staff 816 Jun 8 10:55 cs
drwxr-xr-x 6 h staff 204 Jun 8 10:55 draft
drwxr-xr-x 9 h staff 306 Jun 8 10:55 files
drwxr-xr-x 2 h staff 68 Jun 9 13:19 hacks
drwxr-xr-x 6 h staff 204 Jun 8 10:55 masters
drwxr-xr-x 4 h staff 136 Jun 8 10:55 static
4. Bash脚本(不推荐用于包含空格的文件名)
例如:$(ls -d */)中的i;执行echo ${i%%/};完成 以下是我得到的:
cs
draft
files
hacks
masters
static
如果你想用'/'作为结尾字符,命令将是:for i in $(ls -d */);执行echo ${i};完成
cs/
draft/
files/
hacks/
masters/
static/
显示没有/的文件夹列表:
ls -d */|sed 's|[/]||g'
Ls和awk(不含grep)
No need to use grep since awk can perform regularexpressino check so it is enough to do this:ls -l | awk '/^d/ {print $9}'
ls -l列出有权限的文件 Awk滤波器输出 '/^d/'正则表达式,只搜索以字母d开头的行(作为目录),并查看第一行-权限 {print}将打印所有列 {print $9}将只打印ls -l输出中的第9列(name)
非常简单明了