shell脚本--⽂件查之find命令
⾸先是通过⽂件名称来查,需要使⽤⼀个-name参数。
查询以  .txt结尾的⽂件,和以 t 开头的⽂件:
ubuntu@ubuntu:~/test$ ls
<   
ubuntu@ubuntu:~/test$ find ./ -name '*.txt'
./
./
find查命令的使用./
ubuntu@ubuntu:~/test$ find ./ -name 't*'
./
.
/
  其中  ./ 表⽰当前⽬录,后⾯还可以跟上⼀些简单的正则表达式,如下⾯的例⼦,注意此时正则表达式需要使⽤引号括起来。ubuntu@ubuntu:~/test$
ubuntu@ubuntu:~/test$ find ./ -name '[a-z]'*    #以⼀个字母开头的⽂件
./
./
./
ubuntu@ubuntu:~/test$ find ./ -name '[1-9]'*    #以⼀个数字1-9开头的⽂件
./
ubuntu@ubuntu:~/test$
可以通过权限值来查,此时要使⽤-perm 参数
ubuntu@ubuntu:~/test$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu 0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu 0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu 0 1⽉  20 21:
ubuntu@ubuntu:~/test$ chmod
ubuntu@ubuntu:~/test$ find -perm 777
./
ubuntu@ubuntu:~/test$ find -perm 664
./
./
.
/
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:
drwxrwxr-x 2 ubuntu ubuntu 4096 1⽉  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
ubuntu@ubuntu:~/test$ find ./ -type f
./
./
./
./
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:
drwxrwxr-x 2 ubuntu ubuntu 4096 1⽉  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1⽉  20 21:
-rw-r--r-- 1 root  root      0 1⽉  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
ubuntu@ubuntu:~/test$ find -user root
./RootTouch
ubuntu@ubuntu:~/test$ find -user ubuntu
.
.
/
./
./
./
./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:
drwxrwxr-x 2 ubuntu ubuntu 4096 1⽉  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu  15 1⽉  20 22:
-rw-r--r-- 1 root  root      0 1⽉  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
-rw-rw-r-- 1 ubuntu ubuntu    0 1⽉  20 21:
ubuntu@ubuntu:~/test$ find ./ -size -10c  #⼩于10字节的⽂件
./
./RootTouch
./
.
/
ubuntu@ubuntu:~/test$ find ./ -size +10c -size -20c  #⼩于20字节,⼤于10字节的⽂件
./
ubuntu@ubuntu:~/test$
find的这些参数是可以配合使⽤的,还可以使⽤xargs命令配合使⽤,将结果作为xargs后⾯命令的输⼊。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。