file命令的使用场景

2021-05-07 16:12发布

6条回答
studentaaa
2021-05-08 15:16

一、获取目录下的文件/目录个数

命令:ls -l | grep "^-" | wc -l   获取目录下的文件个数,不包含子目录

问题:ls -lR|grep "^-"|wc -l  这个命令可以查看目录下文件的个数,包含子目录。但执行时报"无效的多字节字符"

经过试验是中文编码导致出现问题,但不知如何解决?

若要获取目录个数,使用grep "^d" 即可 

 

1.1 Find命令简介   

链接: https://www.cnblogs.com/mictms/p/5191449.html

Find命令主要用于目标的搜索,尽量做到少使用,因为find会消耗大量的系统资源。

使用该命令时,需要避开服务器运行高峰期,最好在指定的小范围内进行搜索,不要轻易使用全盘搜索。

Find命令常用的参数有以下:

-name    根据名称进行匹配        "*":表示通配符、"?":表示匹配一个字符

-size    根据文件大小进行匹配        "+":表示大于、"-":表示小于        1个数据块=512字节=0.5K

-user/-group    根据所有者/组进行匹配        

-type    根据文件类型进行匹配        "f":表示文件、"d":表示目录、"l"表示软件链接、"h":表示硬链接

-inum    根据文件i节点进行匹配    ls -i :显示文件的i节点号

-amin    根据访问时间进行匹配        "+":表示超过指定时间以外,"-":表示在指定时间以内

-cmin    根据文件属性改变时间进行匹配

-mmin    根据文件内容改变时间进行匹配

-a    根据多个条件进行匹配

-o    根据多个条件之一进行匹配

-exec    对搜索结果进行操作,不询问

-ok    对搜索结果进行操作,需要询问

-exec/-ok 命令 {} \;

 

[root@localhost home]# find /etc/ -name init* -a -type f -exec ls -lh {} \;

-rw-r--r--. 1 root root 30 Mar 6 2015 /etc/selinux/targeted/contexts/initrc_context

-rw-r--r--. 1 root root 28K Mar 6 2015 /etc/selinux/targeted/modules/active/modules/init.pp

-rw-r--r--. 1 root root 511 Mar 6 2015 /etc/inittab

-rw-r--r--. 1 root root 798 Mar 6 2015 /etc/sysconfig/init

-rwxr-xr-x. 1 root root 4.6K Jan 15 2015 /etc/sysconfig/network-scripts/init.ipv6-global

 

二、获取目录下所有的文件名字

#!bin/bash

#get all filename in specified path

path=$1

files=$(ls $path)

for filename in $files

do 

  echo $filename >> filename.txt

done

一个简单的shell脚本,将该目录下的所有文件名及目录名称写入到filename.txt。

注意:不去统计子目录是否存在文件,filename.txt文件本身不会进行统计

 

三、使用python统计文件行数


count = 0
for index, line in enumerate(open(filepath,'r')):
    count += 1
print count
 

也有说这样写:

方法一:

"对于文件内容比较多,采用enumerate获取文件行数"
count = 0
for index, line in enumerate(f):
    count += 1
print(count)

一周热门 更多>