统计目录下的文件数目及类型
2013-01-26 12:19
218 查看
1.这段shell可以实现查看当前目录下有多少个文件夹,有多少个文件,其中可读、可写、可执行的分别是多少个。
其中查找当前目录下的可执行文件的命令有两个变量filex1和filex2。
用filex1时有缺陷,如果有文件名是 *结尾的,可能出现问题。(另外使用ls -F命令时,如果文件是目录,在文件名后面放置一个 /,如果文件可执行,则放置一个 *,如果文件为套接字,则放置一个 =,如果为 FIFO,则放置一个 |符号,如果是符号链接,则放置一个 @,所以使用这条命令式,文件结尾有符号*。)
用下面这条命令没有问题
我有一个疑问,用ls -l命令时显示如下:
查找可读、可写文件时可以直接用grep w或者grep r,但用grep x查找可执行文件时,和ls -l的结果是一样的,相当于grep x没有起作用,不明白为什么这样设计。
个人猜测:在Linux系统下,一个文件至少有两部分,文件正文和文件的属性(比如可读、可写)。文件在硬盘存储时,还是以r、w的方式标识文件的可读、可写的属性,而可执行属性的标识不是x,是另外一种方式。也就是说,文件的属性也是以字符串的形式存储在硬盘中,当我们用grep w检索可写的文件时,和代表属性的字符串进行对比,如果发现了w字符,就显示相关文件;而存储在中的每个文件中都有x这个字符,所以用grep
x查找可执行文件时,和ls -l的结果一样。
而且,这种查找可读/可写文件时有弊端,比如说当一个文件命名为keduw,文件的权限为可读,不可写,用grep w 查询可写文件时,这个文件也会显示出来,因为它的名字中包含w这个字符。
2.实现同样的功能还有一种写法,如下:
要判断是否可读/可写,只需要再添加两个if语句即可。
#!/bin/bash dir=`ls -l | grep ^d | wc -l` file=`ls -l | grep ^- | wc -l` filew=`ls -l | grep w | wc -l` filer=`ls -l | grep r | wc -l` filex1=`ls -lF | grep "\*" | wc -l` filex2=`ls -l | grep ^- |awk 'substr($1,4,1)=="x" || substr($1,4,1)=="s"'|wc -l` echo "There are $dir directoty in `pwd`." echo "There are $file files in `pwd`." echo "There are $filew files are writeabled." echo "There are $filer files are readabled." echo "There are $filex1 files can be excuted." echo "There are $filex2 files can be excuted." echo "$0"
其中查找当前目录下的可执行文件的命令有两个变量filex1和filex2。
用filex1时有缺陷,如果有文件名是 *结尾的,可能出现问题。(另外使用ls -F命令时,如果文件是目录,在文件名后面放置一个 /,如果文件可执行,则放置一个 *,如果文件为套接字,则放置一个 =,如果为 FIFO,则放置一个 |符号,如果是符号链接,则放置一个 @,所以使用这条命令式,文件结尾有符号*。)
用下面这条命令没有问题
ls -l | grep ^- | awk 'substr($1,4,1)=="x"||substr($1,4,1)=="s" {print $NF}'
我有一个疑问,用ls -l命令时显示如下:
-rwxrwxr--. 1 478 Jan 26 12:30 count.sh
查找可读、可写文件时可以直接用grep w或者grep r,但用grep x查找可执行文件时,和ls -l的结果是一样的,相当于grep x没有起作用,不明白为什么这样设计。
个人猜测:在Linux系统下,一个文件至少有两部分,文件正文和文件的属性(比如可读、可写)。文件在硬盘存储时,还是以r、w的方式标识文件的可读、可写的属性,而可执行属性的标识不是x,是另外一种方式。也就是说,文件的属性也是以字符串的形式存储在硬盘中,当我们用grep w检索可写的文件时,和代表属性的字符串进行对比,如果发现了w字符,就显示相关文件;而存储在中的每个文件中都有x这个字符,所以用grep
x查找可执行文件时,和ls -l的结果一样。
而且,这种查找可读/可写文件时有弊端,比如说当一个文件命名为keduw,文件的权限为可读,不可写,用grep w 查询可写文件时,这个文件也会显示出来,因为它的名字中包含w这个字符。
2.实现同样的功能还有一种写法,如下:
#!/bin/bash f=0 d=0 x=0 for files in * do if [ -f "$files" ] then f=`expr $f + 1` if [ -x "$files" ] then x=`expr $x + 1` fi fi done for directory in * do if [ -d "$directory" ] then d=`expr $d + 1` fi done echo "There are $d directorys in `pwd`." echo "There are $f files in `pwd`,and $x of them can be excuted."注意是否要添加空格,if [ -f "$files" ]之间要加空格,赋值之间不能加空格,f=0.还有可写的文件一定要有可读的属性,不然无法编辑。
要判断是否可读/可写,只需要再添加两个if语句即可。
相关文章推荐
- 统计目录下的文件数目及类型
- 统计指定目录下面的文件类型及数量
- linux shell 统计不同类型文件数目
- 函数_实例1_统计目录下所有文件数目
- shell统计指定目录下所有文件类型及数量
- 【Shell】统计目录下文件数目
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
- Linux下统计某个目录文件数目
- Linux Shell统计一个目录下每种文件类型数量
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- shell统计指定目录下所有文件类型及数量
- 批处理-统计一下当前目录中到底有多少种类型的文件
- Linux Advance--目录下文件类型统计
- 批处理-统计一下当前目录中到底有多少种类型的文件
- 利用Python编写一个程序 统计当前目录下的每个文件类型的文件数目
- perl脚本之__分类统计某一目录下指定类型文件的大小
- Linux终端上统计指定类型文件的数目的方法
- 拷贝案例——拷贝指定目录的指定类型的文件到指定目录
- go语言实现遍历目录,及查找特定的文件类型
- 统计当前文件夹下的文件个数、目录个数