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

ls -d */

模式*/到底做什么?

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


当前回答

我使用:

ls -d */ | cut -f1 -d'/'

这将创建一个没有结尾斜杠的单列——在脚本中很有用。

其他回答

使用Perl:

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

再加上一个完整的循环,检索每个文件夹的路径,使用Albert的答案和Gordans的组合。这应该很有用。

for i in $(ls -d /pathto/parent/folder/*/); do echo ${i%%/}; done

输出:

/pathto/parent/folder/childfolder1/
/pathto/parent/folder/childfolder2/
/pathto/parent/folder/childfolder3/
/pathto/parent/folder/childfolder4/
/pathto/parent/folder/childfolder5/
/pathto/parent/folder/childfolder6/
/pathto/parent/folder/childfolder7/
/pathto/parent/folder/childfolder8/

如果你有空间在你的文件夹名称$9打印不工作尝试下面的命令

ls -l yourfolder/alldata/ | grep '^d' | awk '{print $9" " $10}'

输出

ls -l yourfolder/alldata/ | grep '^d' | awk '{print $9" " $10}'
testing_Data 
Folder 1

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

文件计数。

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

一个当前目录的普通列表,它将是:

ls -1d */

如果你想要整理干净:

ls -1d */ | cut -c 1- | rev | cut -c 2- | rev | sort

记住:大写字符在排序中有不同的行为