该命令列出当前路径下的目录:

ls -d */

模式*/到底做什么?

我们如何在上面的命令中给出绝对路径(例如ls -d /home/alice/Documents),只列出该路径下的目录?


当前回答

只从“这里”列出目录的一行程序。

文件计数。

for i in `ls -d */`; do g=`find ./$i -type f -print| wc -l`; echo "Directory $i contains $g files."; done

其他回答

有四种方法可以做到这一点,每种方法都有不同的输出格式

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/

使用Perl:

ls | perl -nle 'print if -d;'

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)

非常简单明了

*/是一个匹配当前目录中所有子目录的模式(*将匹配所有文件和子目录;/将其限制为目录)。类似地,要列出/home/alice/Documents下的所有子目录,请使用ls -d /home/alice/Documents/*/

*/是一个文件名匹配模式,匹配当前目录中的目录。

只列出目录,我喜欢这个函数:

# Long list only directories
llod () {
  ls -l --color=always "$@" | grep --color=never '^d'
}

把它放在你的。bashrc文件中。

使用例子:

llod       # Long listing of all directories in current directory
llod -tr   # Same but in chronological order oldest first
llod -d a* # Limit to directories beginning with letter 'a'
llod -d .* # Limit to hidden directories

注意:如果您使用-i选项,它将中断。这里有一个解决方案:

# Long list only directories
llod () {
  ls -l --color=always "$@" | egrep --color=never '^d|^[[:digit:]]+ d'
}