打印文件夹名称字符数

打印文件夹名称字符数

我正在尝试使用find . -type d -print | wc -mwhere-m--charswill 打印文件夹名称的字符数。

以下面的屏幕截图为例,字符数为临时文件夹+临时文件夹+叮咚文件夹只是34,并且计数斜线和点的事件仍然是40。为什么命令打印出来43人物?额外的3个角色是从哪里来的?

在此输入图像描述

答案1

find . -type d -print | tr -d '\n' | wc -m

tr将删除所有换行符并wc计算您想要的数量。

答案2

显然尾随换行符也被算作一个字符。

假设您想要每个目录的字符数,您可以这样做

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; 
1
12
27

加起来就是您要查找的 40 个。请注意,echo -n删除了尾随的换行符。

将这三者相加也是可能的。

$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; | awk '{S+=$1} END  {print(S)}'
40

答案3

将 bash/ksh/zsh 数组设置ct为 的输出wc -lm,然后使用 shell 算术。

ct=($(find . -type d -print |wc -lm)); echo $((ct[1]-ct[0]))

或者使用字段分割和位置参数:

set $(find . -type d -print |wc -lm); echo $(($2 - $1))

相关内容