linux命令积累

---------------------------------------------------------------------------------------

查看某 文件夹 下文件的个数

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

find ./company -type f | wc -l

查看某 文件夹 下 文件 的个数,包括 子文件夹 里的。

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

查看某 文件夹 下 文件夹 的个数,包括 子文件夹 里的。

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

 

说明:

ls -l    :长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)

grep "^-"  :这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

 wc -l   :统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

---------------------------------------------------------------------------------------

查看内存条个数,每根的信息

#dmidecode | grep -A16 "Memory Device$"

CPU信息:

cat /proc/cpuinfo

内存信息:

cat /proc/meminfo

------------------------------------------------------------------------------------------

列出当前文件夹及各子文件夹下的相应正则的文件,例如所有.o的文件

find ./ -type f | grep '\.o'

对于grep下的正则式中的点需要转义,所以需要引号括起来

---------

另外,用 rm `find ./ -type f | grep '\.o'`可以把上述文件都删掉,注意是`而不是单引号'

``的意思是把其中的命令的执行结果作为rm 的参数。

-------------------------------------------------------------------------------------------

列出当前进程操作的文件数(包括用到的库、通道、链接等)

lsof -p pid | wc -l

-------------------------------------------------------------------------------------------

查看当前文件夹下的子文件夹工文件的大小

du -h --max-depth=1 work/testing

-------------------------------------------------------------------------------------------

对文件按行乱序

awk 'BEGIN{srand()}{b[rand()NR]=$0}END{for(x in b)print b[x]}' dst.11.6_17.uniq > dst.6_17.uniq.rand

-------------------------------------------------------------------------------------------

shell sort

sort -t $'\t' -k 1n,1 -k 2n,2 -k4rn,4 -k3,3 <my-file>

-t $'\t':指定TAB为分隔符
      -k 1, 1: 按照第一列的值进行排序,如果只有一个1的话,相当于告诉sort从第一列开始直接到行尾排列
      n:代表是数字顺序,默认情况下市字典序,如10<2
      r: reverse 逆序排列,默认情况下市正序排列

;