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后面命令的輸入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM