关于后端:统计命令汇总

实用于Unix体系

对于wc命令

Word Count 用于统计指定文件中的字节数、字数、行数,并将统计结果显示输入。

wc [-lcw]

  • c 统计字节数
  • l 统计行数
  • m 统计字符数,此标记不能与-c标记一起应用
  • w 统计字数。一个字定义为由空白、跳格或换行字符分隔的字符串


统计某文件夹下的文件数量

ls -l | grep "^-" | wc -l

<font color=”#668B8B” size=1>

grep “^-“: 将ls -l长列表输入信息过滤一部分,只保留个别文件;

如果只保留目录就是 ^d

wc -l: 统计输入信息的行数, 因为曾经过滤得只剩个别文件了,又因为一行信息对应一个文件, 所以后果也就是文件的个数

</font>


统计某文件夹下的目录的数量(即文件夹的数量)

ls -l | grep "^d" | wc -l


统计文件夹下文件的个数,包含子文件

ls -lR | grep "^-" | wc -l

<font color=”#668B8B” size=1>

-R为 递归子文件夹

wc -l: 统计输入信息的行数, 因为曾经过滤得只剩个别文件了,又因为一行信息对应一个文件, 所以后果也就是文件的个数

</font>


统计文件夹下目录个数,包含子目录

ls -lR | grep "^d" | wc -l


应用脚本 统计文件夹下所有文件的总字符数

#!/bin/bash
files=$(ls)

all=0
for i in $files; do
 #疏忽该脚本自身蕴含的字符
  if [ $i != 'wc.sh' ]; then
    head -n1 $i
    t=$(wc -m $i | cut -d ' ' -f5)
    all=$(($all+$t))
    echo '  统计字数: '$t
  fi
done

echo '共计字数'$all

该脚本其实有问题,因为cut -d ' ' -f5并不一定恰好能拿到wc统计出的字符数量

用wc命令怎么做到只打印统计数字不打印文件名

能够应用cat test.txt |wc -l 代替wc -l test.txt,这样就解决了这个问题~

修改后的脚本如下:

#!/bin/bash
files=$(ls)

all=0
for i in $files; do
 #疏忽该脚本自身蕴含的字符
  if [ $i != 'wc.sh' ]; then
    head -n1 $i
    t=$(cat $i | wc -m )
    all=$(($all+$t))
    echo '  统计字数: '$t
  fi
done

echo '共计字数'$all

再为其增加判断,疏忽掉以后文件夹下的目录,只统计纯文件

#!/bin/bash
files=$(ls)

all=0
for i in $files; do
 #疏忽该脚本自身蕴含的字符
  if [[ $i != 'wc.sh' ]] && ! [[ -d $i ]]; then
    head -n1 $i
    t=$(cat $i | wc -m )
    all=$(($all+$t))
    echo $i  '  统计字数: '$t
  fi
done

echo ""
echo ""
echo '共计字数'$all

共601篇博客,字数共计 1655265

本文由mdnice多平台公布

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理