python查找文件夹下的文件含子目录_杂集:浅谈linux中find、locate、whereis、which等文件查询命令...

在日常使用linux系统的过程中,我们会经常需要在系统中查找一个文件,那么在Linux系统中如何准确高效的确定一个文件在系统中的具体位置。提供如下几种命令。

1、 find命令

man find

93b2c0c9912b4dbc7892d7d87b08b3f5.png

格式:

find

:所要搜索的目录及其所有子目录[默认为当前目录]。

:所要搜索的文件的特征。

:对搜索结果进行特定的处理。

即:

find pathName -options [-print -exec -ok]

注意:

如果什么参数都不加,find默认搜索当前目录及其子目录,并且不过滤任何结果。

常用的option选项:

-name:按文件名来查找文件。

-user:按照文件的属主来查找文件。

-group:按照文件所属的组来查找文件。

-perm:按照文件权限来查找文件。

-prune:不在当前指定目录中查找。

案例:

1.1、

find /etc/ -name 'passwd'

查看/etc/目录及其子目录下passwd文件

46b316f1766a4d55db7e185c6fa94dbb.png

1.2、

find /etc/ -path /etc/pam.d -prune -o -name 'passwd' -print

排除/etc/pam.d目录下的passwd

798b6b01f24b56ba77b3465a3bc48b26.png

1.3、

find . -name '*.sh' -ls

查看当前目录及以下.sh结尾的文件并以ls输出

7261cf6a62dfd36f9c3d899b776b54c2.png

1.4、

find . -perm 700 -ls

查看当前目录及子目录下权限为700的文件

b6f6f97d3d4c251442198231eab2ba2a.png

补充:

find在寻找数据的时候相当的耗硬盘,请见whereis与locate。

2、 locate命令

其实是"find -name"的另一种写法,比后者快得多,原因是它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。

补充:

Linux系统自动创建这个数据库,每天自动更新一次,所以使用locate命令查不到最新变动过的文件。

注意:

为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

man locate

757cb024df2c2d22fa0820220c0f8fb5.png

案例:

2.1、

locate ~/*.sh

搜索用户家目录下以.sh结尾的文件

1849c23f7f45e09bcd2e9a7f3c7e3dce.png

2.2、

在用户家目录的myShell目录新创建一个DEMO文件

a37d89f80f1a247f5087fdbd8c9e2fa7.png

locate -i ~/General/myShell/de

以不区分大小写de去查询

并未查询到DMEO文件

ea9d67213dd60bbd24d322c64c7e06d5.png

updatedb

locate -i ~/General/myShell/de

下图所示:

查出来了我们刚刚创建的DEMO文件

9742263be042b668b69c1af635f3c09d.png

补充:

每次文件更新和删除之后,未执行updatedb,数据库中保存的文件信息不会改变。

例如:

新建一个文件,未执行updatedb,用locate搜索不到新建的文件。

同理:

删除一个文件,未执行updatedb,用locate照样能搜索到该文件的信息。

3、 whereis 命令

下图标红描述:

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。

如果省略参数则返回所有的信息。

e2420749265a97511b54470052329a34.png

案例:

以我们find为例

whereis find

返回了所有信息

c2ac9579538c1063ffe7386f3daada59.png

whereis -m/b/s find

b939341c3da718f961d1f7f589ea5a76.png

4、 which命令

在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

案例:

打印一下PATH

echo $PATH

04a92cd1b320527b2de4662a5d3fa3b1.png

查看一下我们java命令的位置

which java

下图该路径就在我们的PATH变量中

eac3b43aaca5bf1ab681c588a253ca7b.png

测试完成

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值