在linux系统中大量的文件,我们如何快速定位找出我们需要的文件?下面我们来给大家揭晓答案。
如find命令,它能够迅速在指定范围内查找到文件。如,在/usr/bin/目录中查找zip命令。
#Find /usr/bin/ -name zip -print
/usr/bin/zip
从上面的实例中,可以看到find会深入这个路径的每一个子目录去寻找,因此如果指定“/”,那么就查找整个文件系统。-name选项指定了文件名,zip.另一种表达形式可以使用通配符来指定文件名,如“find ~/ -name *.c -print”将列出用户主目录下所有的c程序文件。-print的意思是将结果输出到标准输出(这里指的是屏幕)。Find命令会打印出文件的绝对路径。
Find命令还可以指定文件的类型。如-type选项定位特殊文件类型。例如在/etc/目录中查找名叫init.d的目录。
#find /etc/ -name init.d -type d print
find :/etc/ssl/private:Permission denied
find:/etc/cups/ssl:Permission denied /etc
从上面例子中,我们可以看到出现了两行permission denied.原因是普通用户没有这两个目录的权限。
-type选项可以使用的参数如下所示
Find命令的-type选项可供使用的
参数 | 含义 | 参数 | 含义 |
b | 块设备文件 | f | 普通文件 |
c | 字符设备文件 | p | 命名管道 |
d | 目录文件 | l | 符号连接 |
Find命令还可以通过指定时间来查找文件。-atime 用来查找最后一次使用在n天前的文件,
-mtime n用来查找最后一次修改在n天前的文件。但是在实际使用过程中,很少能准确确定n的大小。在这种情况下,可以用+n表示大于n,用-n表示小于n。例如,在/usr/bin/中查找最近100天内没有使用过的命令(就是最后一次使用在100天或100天以前的命令)
Find /usr/bin/ -type f -atime +100 -print
/usr/bin
/usr/bin
/usr/bin
/usr/bin
/usr/bin
/usr/bin
/usr/bin
/usr/bin
如下面的查找命令,当前目录中,在最近一天内修改过的文件。
#find . -type f -mtime -1 -print
./text1
./day
./weather
查找指定时间内修改过的文件。
#find -atime -2
按照目录或文件的权限来查找文件
#find /opt/soft/test/ -perm 777
按类型查找。
#find . -type f -name “*.log”
查找当前目录大于1k的文件。
#find . -size +100c -print
另外一个命令which文件的定位。Which是在path变量指定的路径中,搜索某个系统命令的位置,返回第一个搜索结果。使用which命令,可看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。Which的使用方法如:
#which lsmod
Which的命令参数说明如下。
-n指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p与-n参数相同,但此处的文件名长度包含了文件的路径。
-w指定输出时栏位的宽度。
-v显示版本信息。
最后,介绍一下管道,什么是管道,管道起了什么样的作用?
管道将“重定向”再向前推进了一步。通过一根竖线“|”,将一条命令的输出连接到另一条命令输入。如何在文件列表中查找文件名中包含某个特定字符串的文件。
#ls | grep ay
days
hrad_days
mplayer
mplayer~
my_days
ls 列出当前目录下的所有文件名。
管道“|”接收到这些输出,并把他们发送给grep命令作为其输入。Grep在这些文件列表中查找包含字符串ay的文件名,并标准输出(也就是显示器)显示。
命令中可以使用多个管道,构造出复杂的shell命令。合理使用管道是提高工作效率的有效手段。