Linux(centos)系統find查找詳解


Find查找方式:

可以通過不同的維度來精確定位到某個文件——

文件名,類型,大小,時間...

1. find名稱關鍵字查找  -name

小選項:i 忽略大小寫

格式:find 大體路徑 -name “文件或目錄名關鍵字”

find 大體路徑 -iname “文件或目錄名關鍵字”

例如:

1.1.  

[root@dazhu200 ~]# find /etc/ -name "rc.*"

/etc/rc.d

/etc/rc.d/rc.local

/etc/rc.local

[root@dazhu200 ~]#

1.2.  

[root@dazhu200 ~]# find ./ -iname "*u*"

./.bash_logout

./nu1

./number

2. find 類型查找 -type

小選項:f文件 d目錄 l連接 b塊設備 c字節設備 s網絡套接字 p管道文件

格式:find 大概路徑 -type 小選項

例:

[root@dazhu200 ~]# find /dev -type b

/dev/sr0

/dev/sda3

/dev/sda2

/dev/sda1

/dev/sda

[root@dazhu200 ~]#

3. find 大小查找 -size

小選項:+ -

-size +-and  -size -量 (取間隔)

-and(並且,並集關系,默認為-a

[root@dazhu200 ~]# find / -type f -size +100M -size -150M

/usr/lib/locale/locale-archive

[root@dazhu200 ~]# ll /usr/lib/locale/locale-archive

-rw-r--r--. 1 root root 106070960 Jul 15 11:01 /usr/lib/locale/locale-archive

4. find 時間查找

以天為單位 

-mtime(修改時間) -ctime(屬性改變時間)  -atime(查看時間)

以分鍾為單位

-mmin (修改時間)-cmin(屬性改變時間)  -amin(查看時間)

小選項:

-number  n天之內

+number n天之前

number 第幾天n天之前不包括第n天   第n天不包括今天n天之內包括今天

格式:find 大概路徑 -mtime 小選項

 [root@dazhu200 ~]# find ./ -mtime +2(不算當天過去兩天之前的文件)

./.bash_logout

./.bash_profile

./.bashrc

./.cshrc

./.tcshrc

[root@dazhu200 ~]#

[root@dazhu200 ~]# find ./ -mtime -2(算上當天兩天之內的內容)

./

./.bash_history

./nu1

./ok.txt

./err.txt

./nUmber

./.viminfo

[root@dazhu200 ~]#

[root@dazhu200 ~]# find ./ -mtime 2(過去第二天內容)

./.lesshst

./大柱英語

./nu2

./nu3

[root@dazhu200 ~]#

5. find 用戶查找 -user

選項:用戶名

格式:find 大概路徑 -user name

[root@dazhu200 ~]# find ./ -user root

./

./.bash_logout

./.bash_profile

./.bashrc

./.cshrc

./.tcshrc

./.bash_history

./.lesshst

./大柱英語

./nu1

./nu2

6. find 屬組查找 -group

小選項:屬組

格式:find 大概路徑 -group 屬組

[root@dazhu200 ~]# find ./ -group root

./

./.bash_logout

./.bash_profile

./.bashrc

./.cshrc

./.tcshrc

./.bash_history

7. 按深度等級查找

-maxdepth n

[root@dazhu200 ~]# find ./ -maxdepth 1 -type f

./.bash_logout

./.bash_profile

./.bashrc

./.cshrc

./.tcshrc

./.bash_history

8. inode查找,刪除特殊符號名文件

-inum

小選項:inode

33617260 -rw-r--r-- 2 root root 8332 Aug  4 21:52 大柱英語

[root@dazhu200 ~]# find ./ -inum 33617252

./nu.zip.gz

[root@dazhu200 ~]# find ./ -inum 33617260

./大柱英語

[root@dazhu200 ~]#

\等特殊符號無法被刪除時,使用find inum查找然后rm -rf `find...`刪除。

9. 組合

且:-a(默認為-aand)  或:-oor)    無“選項”:-no”選項”

9.1. 查找屬主是dazhu且屬組是root的文件:

[root@dazhu200 ~]# find ./ -user dazhu -a -group root

find: dazhuis not the name of a known user

9.2. 查找屬主是大柱或屬組是root的文件:

[root@dazhu200 ~]# find ./ -user 大柱 -o -group root

find: ‘大柱’ is not the name of a known user

9.3. 查找兩天內且文件名為*n*”的文件:

[root@dazhu200 ~]# find ./ -name "*n*" -a -mtime 2

./nu2

./nu3

[root@dazhu200 ~]#

10. 查找沒有屬組且沒有屬主的文件

[root@dazhu200 ~]# find ./ -nouser -a -nogroup

[root@dazhu200 ~]#

11. find查找后的動作 

11.1. -exec

格式:find ... -exec 命令 {} \

命令:幾乎所有命令都可執行但是find不支持別名

[root@dazhu200 ~]# find ./ -type f -name "nu*" -exec cp {} /tmp \;

[root@dazhu200 ~]# ll /tmp|grep “nu*”

ls: cannot access nu*: No such file or directory

/tmp:

total 12

-rw-r--r--  1 root root  57 Aug  3 10:25 nu1

-rw-r--r--  1 root root  21 Aug  3 10:25 nu2

-rw-r--r--  1 root root 123 Aug  3 10:25 nu3

drwx------. 2 root root   6 Jul 27 08:29 vmware-root

11.2. |xargs

...|xargs 后繼命令(find不支持別名,所以rm慎用!)

選項: -i {} 將上一條命令執行結果插入{}

...|xargs -i 后繼命令 {} ... (將上調命令執行結果插入{}使用)

[root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs -i mv {} /tmp

[root@dazhu200 ~]# ll

total 20

-rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

-rw-r--r-- 1 root root    0 Jul 31 22:26 nUmber

-rw-r--r-- 1 root root   57 Jul 31 20:53 ok.txt

-rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英語

[root@dazhu200 ~]# ll /tmp

total 16

-rw-r--r--  1 root root  57 Jul 31 20:43 nu1

-rw-r--r--  1 root root  21 Jul 31 10:56 nu2

-rw-r--r--  1 root root 123 Jul 31 11:01 nu3

-rw-r--r--  1 root root 197 Aug  3 11:03 nu5

drwx------. 2 root root   6 Jul 27 08:29 vmware-root

 

選項:-t 默認t后直接借助上調命令執行結果

...|xargs cpmv -t..

[root@dazhu200 ~]# find ./ -type f -name "nu*"|xargs cp -t /tmp

[root@dazhu200 ~]# ll /tmp

total 16

-rw-r--r--  1 root root  57 Aug  3 20:43 nu1

-rw-r--r--  1 root root  21 Aug  3 20:43 nu2

-rw-r--r--  1 root root 123 Aug  3 20:43 nu3

-rw-r--r--  1 root root 197 Aug  3 20:43 nu5

drwx------. 2 root root   6 Jul 27 08:29 vmware-root

[root@dazhu200 ~]#

其他功能:進一步過濾與批量修改文件名

find ./ -type f |xargs grep 文件名

 [root@dazhu200 ~]# find ./ -type f | grep nu*grep默認只過濾當前目錄,遞歸過濾文件內容需要使用-R選項)

nu5:-rw-r--r--  1 root root  57 Aug  3 10:40 nu1

find ./ -type f |xargs -i cp {} {}.test

[root@dazhu200 ~]# find ./ -type f |xargs -i cp {} {}.test

[root@dazhu200 ~]# ll

total 72

-rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

-rw-r--r-- 1 root root   36 Aug  3 21:18 err.txt.test

-rw-r--r-- 1 root root   57 Jul 31 20:43 nu1

-rw-r--r-- 1 root root   57 Aug  3 21:18 nu1.test

-rw-r--r-- 1 root root   21 Jul 31 10:56 nu2

-rw-r--r-- 1 root root   21 Aug  3 21:18 nu2.tes

11.3. `可執行命令`

[root@dazhu200 ~]# rm -rf `find /tmp/ -name "nu*"`

[root@dazhu200 ~]# ll /tmp

total 0

drwx------. 2 root root 6 Jul 27 08:29 vmware-root

[root@dazhu200 ~]#

11.4. ;

;在命令行中有特殊含義。並列執行多條命令,不管其他命令是否可以成功執行,可以執行的都會執行。

[root@dazhu200 ~]# ll;mkdir dazhu;touch dazhu/nu6

total 36

-rw-r--r-- 1 root root   36 Jul 31 20:45 err.txt

-rw-r--r-- 1 root root   57 Jul 31 20:43 nu1

-rw-r--r-- 1 root root   21 Jul 31 10:56 nu2

[root@dazhu200 ~]# ll dazhu

total 0

-rw-r--r-- 1 root root 0 Aug  3 21:28 nu6

11.5. &&

&& 串聯多個命令,前邊的無法成功執行后邊的也就無法執行。

[root@dazhu200 ~]# mkdir dazhu&&mkdir xiaozhu

mkdir: cannot create directory ‘dazhu’: File exists

[root@dazhu200 ~]# find ./ -type d -name "xiaozhu"

[root@dazhu200 ~]#

11.6. ||

|| 前邊的命令執行失敗,后面的命令才會執行

[root@dazhu200 ~]# find ./ -type d -name "xiaozhu"

[root@dazhu200 ~]# cd xiaozhu|| mkdir xiaozhu

-bash: cd: xiaozhu: No such file or directory

[root@dazhu200 ~]# ll

drwxr-xr-x 2 root root    6 Aug  3 21:36 xiaozhu

-rw-r--r-- 1 root root 8326 Jul 30 22:03 大柱英語

[root@dazhu200 ~]# cd xiaozhu || mkdir xiaoming

[root@dazhu200 xiaozhu]# which xiaoming

/usr/bin/which: no xiaoming in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

1.1.1. 待續...動作:

u 直接跟命令選項:

l -print (默認為-print

l -ls 以長格式顯示

l -delete 刪除文件但是僅能刪除空目錄

l -ok 實現文件cp但是會提示是否cp

 -ok cp

.....待續

 

12. 待續...  ...

  1. #find /etc -type f | xargs grep “dazhu” --color=auto
  2. find 的邏輯運算符 -a 與 and(且) -o 或 or (和) ! 非 -not
  3. !取反


免責聲明!

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



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