shell脚本--文件查找之find命令

首先是通过文件名称来查找,需要使用一个-name参数。

查询以  .txt结尾的文件,和以 t 开头的文件

ubuntu@ubuntu:~/test$ ls
one.txt  three.txt  two.txt
ubuntu@ubuntu:~/test$ find ./ -name '*.txt'
./two.txt
./one.txt
./three.txt
ubuntu@ubuntu:~/test$ find ./ -name 't*'
./two.txt
./three.txt

  其中  ./ 表示当前目录,后面还可以跟上一些简单的正则表达式,如下面的例子,注意此时正则表达式需要使用引号括起来。

 

ubuntu@ubuntu:~/test$ touch 123.txt
ubuntu@ubuntu:~/test$ find ./ -name '[a-z]'*    #以一个字母开头的文件
./two.txt
./one.txt
./three.txt
ubuntu@ubuntu:~/test$ find ./ -name '[1-9]'*    #以一个数字1-9开头的文件
./123.txt
ubuntu@ubuntu:~/test$ 

  

可以通过权限值来查找,此时要使用-perm 参数

ubuntu@ubuntu:~/test$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:24 123.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 one.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 two.txt
ubuntu@ubuntu:~/test$ chmod 777 one.txt
ubuntu@ubuntu:~/test$ find -perm 777
./one.txt
ubuntu@ubuntu:~/test$ find -perm 664
./two.txt
./three.txt
./123.txt
ubuntu@ubuntu:~/test$ 

  

还可以通过文件类型来查找,使用-type参数,其中f表示文件,d表示目录

ubuntu@ubuntu:~/test$ mkdir dirOne
ubuntu@ubuntu:~/test$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
ubuntu@ubuntu:~/test$ find ./ -type f
./two.txt
./one.txt
./three.txt
./123.txt
ubuntu@ubuntu:~/test$ find ./ -type d
./
./dirOne
ubuntu@ubuntu:~/test$ 

  

可以根据文件创建者查找,使用-user参数

ubuntu@ubuntu:~/test$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
-rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
ubuntu@ubuntu:~/test$ find -user root
./RootTouch
ubuntu@ubuntu:~/test$ find -user ubuntu
.
./two.txt
./one.txt
./three.txt
./123.txt
./dirOne
ubuntu@ubuntu:~/test$ 

  

可以根据文件更改时间来查找,使用-mtime参数。 

find ./ -mtime -5   #查找当前目录下,5天以内更改过的文件或者目录
find ./ -mtime +3    #查找当前目录下,最后一次更改时间在3天以前的文件

  

根据文件大小来查找,使用-size参数。注意如果要是用文件区间,则每一个文件大小的前面都要加上-size参数,和mtime类似。还要注意的是,1兆字节使用1M,不要使用1m

ubuntu@ubuntu:~/test$ ls -l
total 8
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu   15 1月  20 22:01 one.txt
-rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
ubuntu@ubuntu:~/test$ find ./ -size -10c   #小于10字节的文件
./two.txt
./RootTouch
./three.txt
./123.txt
ubuntu@ubuntu:~/test$ find ./ -size +10c -size -20c   #小于20字节,大于10字节的文件
./one.txt
ubuntu@ubuntu:~/test$ 

  

find的这些参数是可以配合使用的,还可以使用xargs命令配合使用,将结果作为xargs后面命令的输入。

转载于:https://www.cnblogs.com/-beyond/p/8322161.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值