有时候需要看文件夹下有多少文件,那么就需要用到以下指令
$ls -l | grep -c '^-'
个grep是啥意思呢?我们man一下
$man grep
会看到以下描述:
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
DESCRIPTION
grep searches the named input FILEs (or standard input if no files are
named, or if a single hyphen-minus (-) is given as file name) for lines
containing a match to the given PATTERN. By default, grep prints the matching lines.
是说白了就是打印出和在FILE中寻找和PATTERN一样的关键字,然后将这一行打印出来,其他的OPTIONS参数请自行用man命令查看,-c 就是不直接打印,而是统计行数,那么"^-" 这个是什么意思呢?
Linux常见的文件类型有:普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等,其中:
1 普通文件的文件权限第一个字符为“-”
2 目录文件的文件权限第一个字符为“d”
3 字符设备文件的文件权限第一个字符为“c”;
4 块设备文件的文件权限第一个字符为“b”
5 符号链接文件的文件权限第一个字符为“s”
那我就明白了,其实就是统计普通文件的个数呗,同理可得~
# 统计目录的个数
$ls -l | grep -c '^d'
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
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于
一行信息对应一个文件,所以也就是文件的个数。
Linux查看文件夹大小
du -sh 查看当前文件夹大小
du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序
du -sk filename 查看指定文件大小
查看目录下有多少个文件及文件夹需
ls | wc -w
查看目录下有多少个文件需
ls | wc -c