首页 > 系统相关 >Linux文件管理知识查找文件(第二篇)

Linux文件管理知识查找文件(第二篇)

时间:2023-08-31 12:33:05浏览次数:51  
标签:me 文件 查找文件 BAK 命令 Linux print 第二篇 find

Linux文件管理知识:查找文件(第二篇)

上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。

Find命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find 命令是基于搜索结果来执行操作命令程序。

预定义操作描述:

操作

描述

-delete

删除当前匹配的文件

-ls

对匹配的文件执行等同的ls -dils 命令。并将结果发送到标准输出

-print

把匹配文件的全路径名输送到标准输出。如果没有指定其它操作,这是默认操作

-quit

一旦找到一个匹配,退出

例如:

find ~

find ~ -print

//此命令将home家目录中包含的每个文件和子目录输出。以一个列表的形式输出。两种命令的输出完全一致。

删除特定条件的文件

使用find 命令可以删除符合一定条件的文件。

例如:

find ~ -type f -name '*.BAK' -delete

//删除扩展名为“.BAK”(这通常用来指定备份文件)的文件, 在用户家目录及它的子目录下搜索以.BAK 结尾的文件名。一旦以.BAK 结尾的文件被找到后,就删除它们。

备注:当使用-delete 操作命令时,你肯定会格外小心。那我们怎么做更妥当呢?妥当的做法是我们可以先使用print程序命令测试下,是否符合我们要的搜索结果。

逻辑关系—逻辑运算符

例如:

find ~ -type f -and -name '*.BAK' -and -print

这个程序命令一旦被执行,它就会搜索以.BAK后缀的相关文件,并将符合条件文件的相对路径名称标准输出给我们。命令执行的原因是由每个测试和操作之间的逻辑关系决定的。

那么逻辑运算符是如何影响命令如何执行的呢?

测试/行为

只有... 的时候,才被执行

-print

只有-type f and -name ’*.BAK’ 为真的时候

-name

‘*.BAK’ 只有-type f 为真的时候

-type f

总是被执行,因为它是与-and 关系中的第一个测试/行为

此表可以看出测试和行为之间的逻辑关系决定了哪一个会被先执行,同时测试和行为的顺序也很重要。

我们重新调整下测试和行为之间的顺序:让-print 行为是第一个,那么结果会截然不同:

例如:

find ~ -print -and -type f -and -name '*.BAK'

上述命令会输出每个文件(-print 行为总是为真),然后才是测试文件类型和指定的文件扩展名。

用户定义操作

除了预定义的操作外,我们可以调用任意的命令。通常情况下是通过-exec 命令。

例如:

-exec command {} ;

command 代表一个命令的名字,{} 代表当前路径名的符号表示,分号代表必要的分隔符,表明命令的结束。

当然,如何交互式地执行一个用户定义的操作行为?通过使用-ok 操作来代替-exec,它在执行每个指定的命令之前,会提示用户:

find ~ -type f -name 'foo*' -ok ls -l '{}' ';'

< ls ... /home/me/bin/foo > ? y

-rwxr-xr-x 1 me me 224 2007-10-29 18:44 /home/me/bin/foo

< ls ... /home/me/foo.txt > ? y

-rw-r--r-- 1 me me 0 2008-09-19 12:53 /home/me/foo.txt

Xargs命令

xargs 命令的用法—将标准输入或管道构造的参数列表转换成某一特定命令的参数列表并运行该特定命令。通俗的来讲就是xargs取其中一个命令的输出结果作为另外一个命令的参数列表来执行。对于我们的例子,我们可以这样使用它:

find ~ -type f -name 'foo*' -print | xargs ls -l

-rwxr-xr-x 1 me me 224 2007-10-29 18:44 /home/me/bin/foo

-rw-r--r-- 1 me me 0 2008-09-19 12:53 /home/me/foo.txt

这里我们可以得到一个结论:

find命令的执行结果通过管道符|传递给xargs命令,然后,xargs命令将find命令的输出结果作为ls命令的参数,最后再执行ls -l命令。

备注:当某一命令行中的参数列表数量是有限制的,一旦超过linux系统支持的最大长度时,那么xargs命令将会执行该命令,然后一直重复这个过程直到耗尽标准输入。

接下来咱们再看下如何创建一个包含许多子目录和文件:

[root@linuxprobe~]$ mkdir -p playground/dir-{00{1..9},0{10..99},100}

[root@linuxprobe~]$ touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z}

Linux命令的强大功能真是令人惊叹啊!仅仅用了这两行命令,就可以创建一个包含一百个子目录,而且每个子目录中包含了26 个空文件。

现在咱们看看Linux命令是如何实现这个奇迹的!

一个简单的mkdir命令,一个特异的shell 扩展(花括号)包括一个touch命令。通过组合mkdir 命令和-p 参数选项(导致mkdir 命令创建指定路径的父目录),以及花括号,这样的话就能够创建一百个目录。

备注:touch命令通常是用来设置或更新文件的访问,更改,和修改时间的属性。

今天关于linux系统文件查找命令的运用介绍就暂时结束了。locate,updatedb,find 和xargs 命令都是GNU 项目findutils的一部分。这个GUN 项目提供了大量的相当出色的在线文档,我们都需要好好拜读下这些文档。所以强烈建议大家可以参考下《linux就该这么学》这本书,对于linux系统文件管理层面的介绍很详细!

标签:me,文件,查找文件,BAK,命令,Linux,print,第二篇,find
From: https://www.cnblogs.com/linuxpro/p/17669283.html

相关文章

  • Linux文件管理知识:查找文件(第二篇)
    上篇文章详细介绍了 linux 系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。 Find 命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find命令是基于搜索结果来执行操作命令程序。预定......
  • Linux工作站加固的6个方法
    对每个系统管理员来说,以下是应该采取的一些必要步骤:1.一律禁用Firewire和Thunderbolt模块。2.检查防火墙,确保所有入站端口已被过滤。3.确保root邮件转发到你核查的帐户。4.设立操作系统自动更新时间表,或者更新提醒内容。此外,你还应该考虑其中一些最好采取的步骤,进一步加固......
  • linux centos7 开启tomcat不成功
    在bin文件夹下打开终端,输入./start.sh后报错权限不够解决方法:依旧在终端上输入chmod+x*.sh(网上说输入chmod+xstartup.sh也可以,但我没成功)输入ll可看到*.sh的文件都高亮此时再次输入./startup.sh即可成功 ......
  • 【Linux】设置文件权限指令:sudo chmod -R 755 ~
    linux命令chmod755含义解析chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同属一个用户组的其他用户的权限第三个数字表示其它用户组的权限。权限分为三种:读(r=4),写(w=2),执......
  • BCLinux-docker安装配置
    一、系统介绍   Bclinux.x86_64、JDK1.8   系统下载地址:https://mirrors.cmecloud.cn/bclinux/二、Docker安装1、解压tar-xvfdocker-20.10.9.tgz2、将解压出来的docker文件内容移动到/usr/bin/目录下cpdocker/*/usr/bin/3、将docker注册为servicevim/etc/systemd/s......
  • 磁盘为标准分区的linux云主机如何正确进行系统扩容
    问题现象云主机上根盘容量太小计划给根盘扩容,在云平台上点击系统扩容后进入云主机发现挂载点容量大小没变化,如何正确的给文件系统格式为xfs的根盘扩容呢?如图1,当前云主机根盘大小只有100G,需要扩容到200G,需要如何操作?(图1云主机根盘大小情况)原因分析云平台上点击系统扩容......
  • linux命令学习笔记
    sudo+命令:以超级用户模式执行命令sudo-i:切换到超级用户模式,exit退出cd+路径:切换目录ls:当前路径文件列表ls+路径:指定路径文件列表mkdir+名称:新建文件夹chmod[-R]权限值文件名:修改权限(http://c.biancheng.net/view/755.html)tar-cfa.tarbc:把b和c打包成a.tarta......
  • Linux用户相关命令(持续更新)
    忘记用户密码普通用户针对于普通用户忘记密码,还是比较好办的,我们登录root用户使用passwd命令即可,passwd命令有除了修改密码还有其他的一些用法,在这就不逐一展开了。passwd命令修改密码的语法:passwdusername,如下图:然后图中的student用户就可以用设置的新密码登录了。root......
  • 【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect
    问题描述在AppServiceForLinux中,部署NodeJS应用,应用启动失败。报错信息为:2023-08-29T11:21:36.329731566ZRangeError:Incorrectlocaleinformationprovided2023-08-29T11:21:36.329776866ZatIntl.getCanonicalLocales(<anonymous>)2023-08-29T11:21:36.329783066ZatC......
  • Linux运维工程师面试题(4)
    Linux运维工程师面试题(4)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1redis常用的数据类型String:字符串,最基础的数据类型List:列表Hash:哈希对象Set:集合SortedSet:有序集合,Set的基......