find文件查找与文件列表

find是Unix/Linux命令行工具箱中最棒的工具之一。
一、find命令的工作方式
find命令的工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,执行相应的操作。

二、实战演练

要列出当前目录及子目录下所有的文件和文件夹,可以采用下面的写法:

$ find base_path

bash_path可以放在任意位置(例如 /home/slynux),find会从该位置开始往下查找。

例如:
$ find . -print
##打印文件和目录的列表

. 指定当前目录,
. . 指定父目录。
这是Unix文件系统的约定用法。

-print指明打印出匹配文件的文件名(路径)。当使用-print时,’\n’作为用于对输出的文件名进行分隔。就算你忽略-print,find命令仍会打印出文件名。

-print0指明使用’\0’作为匹配的文件名之间的定界符。当文件名中包含换行符时,这个方法就有用武之地了。

三、补充内容

1、根据文件名或正则表达式进行搜索

$ find /home/slynux -name “*.txt” -print

选项-name的参数指定了文件名所必须匹配的字符串。我们可以将通配符作为参数使用。

[通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。]

*.txt能够匹配所有所有以 *.txt 结尾的文件名。
选项 -print在终端中打印出符合条件的文件名或文件路径,这些匹配条件通过find命令的选项给出。

ps:
1)find有个选项 -iname 和-name作用一样,但是可以忽略大小写。

$find . -iname “example*” -print
./example.txt
./EXAMPLE.TXT

2)如果想匹配多个条件中的一个,可以采用or条件
$ find . ( -name “.txt" -o -name ".pdf” ) -print
./text.pdf
./new.txt

上面的代码会打印出所有的 .txt 和 .pdf 文件,是因为这个find命令能够匹配所有这两类文件。

( ) 用于将中间的内容视为一个整体。

2、否定参数
$ fine . ! -name “*.txt” -print
上面的find命令能够匹配所有不以 .txt结尾的文件名。

3、基于目录深度的搜索
-maxdepth
-mindepth

使用以下命令将find文件向下的最大深度限制为1:
$ find . -maxdepth 1 -name “f*” -print

打印出深度距离当前目录至少两个子目录的所有文件:
$ find . -min depth 2 -name “f*” -print

4、根据文件类型搜索

5、根据文件时间进行搜索

6、基于文件大小的搜索

7、删除匹配的文件

8、基于文件权限和所有权的匹配

9、利用find执行命令或动作

10、让find跳过特定的目录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值