我正在尝试为一组命令定义别名,这些命令以递归方式计数并显示任何工作目录中遇到的所有子目录的数量(包括文件名不可见的子目录)。到目前为止,我所做的是:
ls -R | wc -l
但是它不显示隐藏文件的数量。所以我尝试了这个命令:
ls -l | grep ^d | wc -l
但我不确定这是否是正确的命令?
答案1
你应该绝不解析 的输出ls
。请参阅此处的一些解释:
正如其他人所建议的,改用find
。最好的方法(即使目录名称包含换行符或其他类型的空格)是:
alias countdir='find . -type d -print0 | tr -dc "\\0" | wc -c'
请参阅man find
、、man tr
以man wc
了解更多信息。
答案2
有解find . -type d|wc -l
嗎?
答案3
我建议使用find
(手册页)进行搜索。例如,
find . -maxdepth 1 -type d | wc -l
将打印当前工作目录中所有目录的数量。
该-maxdepth
选项控制深入目录的程度find
。值为 时1
,它将仅使用当前目录并列出其子目录。值为 时2
,它还将列出子目录的子目录,依此类推。
这只有一个小缺点:在其列表中find
包含.
(当前工作目录),因此返回的数字wc -l
将会偏离一。