自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

15個(gè)實(shí)用的Linux find命令示例

系統(tǒng) Linux
除了在一個(gè)目錄結(jié)構(gòu)下查找文件這種基本的操作,你還可以用find命令實(shí)現(xiàn)一些實(shí)用的操作,使你的命令行之旅更加簡(jiǎn)易。本文將介紹15種無(wú)論是于新手還是老鳥都非常有用的Linux find命令。

除了在一個(gè)目錄結(jié)構(gòu)下查找文件這種基本的操作,你還可以用find命令實(shí)現(xiàn)一些實(shí)用的操作,使你的命令行之旅更加簡(jiǎn)易。

本文將介紹15種無(wú)論是于新手還是老鳥都非常有用的Linux find命令。

首先,在你的home目錄下面創(chuàng)建下面的空文件,來(lái)測(cè)試下面的find命令示例。

  1. # vim create_sample_files.sh 
  2. touch MybashProgram.sh 
  3. touch mycprogram.c 
  4. touch MyCProgram.c 
  5. touch Program.c 
  6. mkdir backup 
  7. cd backup 
  8. touch MybashProgram.sh 
  9. touch mycprogram.c 
  10. touch MyCProgram.c 
  11. touch Program.c 
  12. # chmod +x create_sample_files.sh 
  13. # ./create_sample_files.sh 
  14. # ls -R 
  15. .: 
  16. backup                  MybashProgram.sh  MyCProgram.c 
  17. create_sample_files.sh  mycprogram.c      Program.c 
  18. ./backup: 
  19. MybashProgram.sh  mycprogram.c  MyCProgram.c  Program.c 

1. 用文件名查找文件

這是find命令的一個(gè)基本用法。下面的例子展示了用MyCProgram.c作為查找名在當(dāng)前目錄及其子目錄中查找文件的方法。

  1. # find -name "MyCProgram.c" 
  2. ./backup/MyCProgram.c 
  3. ./MyCProgram.c 

2.用文件名查找文件,忽略大小寫

這是find命令的一個(gè)基本用法。下面的例子展示了用MyCProgram.c作為查找名在當(dāng)前目錄及其子目錄中查找文件的方法,忽略了大小寫。

  1. # find -iname "MyCProgram.c" 
  2. ./mycprogram.c 
  3. ./backup/mycprogram.c 
  4. ./backup/MyCProgram.c 
  5. ./MyCProgram.c 

3. 使用mindepth和maxdepth限定搜索指定目錄的深度

在root目錄及其子目錄下查找passwd文件。

  1. # find / -name passwd 
  2. ./usr/share/doc/nss_ldap-253/pam.d/passwd 
  3. ./usr/bin/passwd 
  4. ./etc/pam.d/passwd 
  5. ./etc/passwd 

在root目錄及其1層深的子目錄中查找passwd. (例如root — level 1, and one sub-directory — level 2)

  1. # find -maxdepth 2 -name passwd 
  2. ./etc/passwd 

在root目錄下及其***兩層深度的子目錄中查找passwd文件. (例如 root — level 1, and two sub-directories — level 2 and 3 )

  1. # find / -maxdepth 3 -name passwd 
  2. ./usr/bin/passwd 
  3. ./etc/pam.d/passwd 
  4. ./etc/passwd 

在第二層子目錄和第四層子目錄之間查找passwd文件。

  1. # find -mindepth 3 -maxdepth 5 -name passwd 
  2. ./usr/bin/passwd 
  3. ./etc/pam.d/passwd 

4. 在find命令查找到的文件上執(zhí)行命令

下面的例子展示了find命令來(lái)計(jì)算所有不區(qū)分大小寫的文件名為“MyCProgram.c”的文件的MD5驗(yàn)證和。{}將會(huì)被當(dāng)前文件名取代。

  1. find -iname "MyCProgram.c" -exec md5sum {} \; 
  2. d41d8cd98f00b204e9800998ecf8427e  ./mycprogram.c 
  3. d41d8cd98f00b204e9800998ecf8427e  ./backup/mycprogram.c 
  4. d41d8cd98f00b204e9800998ecf8427e  ./backup/MyCProgram.c 
  5. d41d8cd98f00b204e9800998ecf8427e  ./MyCProgram.c 

5. 相反匹配

顯示所有的名字不是MyCProgram.c的文件或者目錄。由于maxdepth是1,所以只會(huì)顯示當(dāng)前目錄下的文件和目錄。

  1. find -maxdepth 1 -not -iname "MyCProgram.c" 
  2. ./MybashProgram.sh 
  3. ./create_sample_files.sh 
  4. ./backup 
  5. ./Program.c 

6. 使用inode編號(hào)查找文件

任何一個(gè)文件都有一個(gè)***的inode編號(hào),借此我們可以區(qū)分文件。創(chuàng)建兩個(gè)名字相似的文件,例如一個(gè)有空格結(jié)尾,一個(gè)沒有。

  1. touch "test-file-name" 
  2. # touch "test-file-name " 
  3. [Note: There is a space at the end] 
  4. # ls -1 test* 
  5. test-file-name 
  6. test-file-name 

從ls的輸出不能區(qū)分哪個(gè)文件有空格結(jié)尾。使用選項(xiàng)-i,可以看到文件的inode編號(hào),借此可以區(qū)分這兩個(gè)文件。

  1. ls -i1 test* 
  2. 16187429 test-file-name 
  3. 16187430 test-file-name 

你可以如下面所示在find命令中指定inode編號(hào)。在此,find命令用inode編號(hào)重命名了一個(gè)文件。

  1. find -inum 16187430 -exec mv {} new-test-file-name \; 
  2. # ls -i1 *test* 
  3. 16187430 new-test-file-name 
  4. 16187429 test-file-name 

你可以在你想對(duì)那些像上面一樣的糟糕命名的文件做某些操作時(shí)使用這一技術(shù)。例如,名為file?.txt的文件名字中有一個(gè)特殊字符。若你想執(zhí)行“rm file?.txt”,下面所示的所有三個(gè)文件都會(huì)被刪除。所以,采用下面的步驟來(lái)刪除"file?.txt"文件。

  1. ls 
  2. file1.txt  file2.txt  file?.txt 

找到每一個(gè)文件的inode編號(hào)。

  1. ls -i1 
  2. 804178 file1.txt 
  3. 804179 file2.txt 
  4. 804180 file?.txt 

如下所示: 使用inode編號(hào)來(lái)刪除那些具有特殊符號(hào)的文件名。

  1. find -inum 804180 -exec rm {} \; 
  2. # ls 
  3. file1.txt  file2.txt 
  4. [Note: The file with name "file?.txt" is now removed] 

7. 根據(jù)文件權(quán)限查找文件

下面的操作時(shí)合理的:

找到具有指定權(quán)限的文件

忽略其他權(quán)限位,檢查是否和指定權(quán)限匹配

根據(jù)給定的八進(jìn)制/符號(hào)表達(dá)的權(quán)限搜索

此例中,假設(shè)目錄包含以下文件。注意這些文件的權(quán)限不同。

  1. ls -l 
  2. total 0 
  3. -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all 
  4. -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read 
  5. ---------- 1 root root 0 2009-02-19 20:31 no_for_all 
  6. -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file 
  7. -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read 
  8. ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read 

找到具有組讀權(quán)限的文件。使用下面的命令來(lái)找到當(dāng)前目錄下對(duì)同組用戶具有讀權(quán)限的文件,忽略該文件的其他權(quán)限。

  1. find . -perm -g=r -type f -exec ls -l {} \; 
  2. -rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read 
  3. -rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all 
  4. ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read 
  5. -rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read 

找到對(duì)組用戶具有只讀權(quán)限的文件。

  1. find . -perm g=r -type f -exec ls -l {} \; 
  2. ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read 

找到對(duì)組用戶具有只讀權(quán)限的文件(使用八進(jìn)制權(quán)限形式)。

  1. find . -perm 040 -type f -exec ls -l {} \; 
  2. ----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read 

8. 找到home目錄及子目錄下所有的空文件(0字節(jié)文件)

下面命令的輸出文件絕大多數(shù)都是鎖定文件盒其他程序創(chuàng)建的place hoders

  1. find ~ -empty 

只列出你home目錄里的空文件。

  1. find . -maxdepth 1 -empty 

只列出當(dāng)年目錄下的非隱藏空文件。

  1. find . -maxdepth 1 -empty -not -name ".*" 

9. 查找5個(gè)***的文件

下面的命令列出當(dāng)前目錄及子目錄下的5個(gè)***的文件。這會(huì)需要一點(diǎn)時(shí)間,取決于命令需要處理的文件數(shù)量。

  1. find . -type f -exec ls -s {} \; | sort -n -r | head -5 

10. 查找5個(gè)最小的文件

方法同查找5個(gè)***的文件類似,區(qū)別只是sort的順序是降序。

  1. find . -type f -exec ls -s {} \; | sort -n  | head -5 

上面的命令中,很可能你看到的只是空文件(0字節(jié)文件)。如此,你可以使用下面的命令列出最小的文件,而不是0字節(jié)文件。

  1. find . -not -empty -type f -exec ls -s {} \; | sort -n  | head -5 

11. 使用-type查找指定文件類型的文件

只查找socket文件:

  1. find . -type s 

查找所有的目錄:

  1. find . -type d 

查找所有的一般文件:

  1. find . -type f 

查找所有的隱藏文件:

  1. find . -type f -name ".*" 

查找所有的隱藏目錄:

  1. find -type d -name ".*" 

12. 通過和其他文件比較修改時(shí)間查找文件

顯示在指定文件之后做出修改的文件。下面的find命令將顯示所有的在ordinary_file之后創(chuàng)建修改的文件。

  1. ls -lrt 
  2. total 0 
  3. -rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read 
  4. ----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read 
  5. -rw------- 1 root root 0 2009-02-19 20:29 ordinary_file 
  6. -rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read 
  7. -rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all 
  8. ---------- 1 root root 0 2009-02-19 20:31 no_for_all 
  9. # find -newer ordinary_file 
  10. ./everybody_read 
  11. ./all_for_all 
  12. ./no_for_all 

13. 通過文件大小查找文件

使用-size選項(xiàng)可以通過文件大小查找文件。

查找比指定文件大的文件:

  1. find ~ -size +100M 

查找比指定文件小的文件:

  1. find ~ -size -100M 

查找符合給定大小的文件:

  1. find ~ -size 100M 

注意: – 指比給定尺寸小,+ 指比給定尺寸大。沒有符號(hào)代表和給定尺寸完全一樣大。

14. 給常用find操作取別名

若你發(fā)現(xiàn)有些東西很有用,你可以給他取別名。并且在任何你希望的地方執(zhí)行。

常用的刪除a.out文件。

  1. alias rmao="find . -iname a.out -exec rm {} \;" 
  2. # rmao 

刪除c程序產(chǎn)生的core文件。

  1. alias rmc="find . -iname core -exec rm {} \;" 
  2. # rmc 

15. 用find命令刪除大型打包文件

下面的命令刪除大于100M的*.zip文件。

  1. find / -type f -name *.zip -size +100M -exec rm -i {} \;" 

用別名rm100m刪除所有大雨100M的*.tar文件。使用同樣的思想可以創(chuàng)建rm1g,rm2g,rm5g的一類別名來(lái)刪除所有大于1G,2G,5G的文件。

  1. alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;" 
  2. # alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;" 
  3. # alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;" 
  4. # alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;" 
  5. # rm100m 
  6. # rm1g 
  7. # rm2g 
  8. # rm5g 

Find命令示例(第二部分)

若你喜歡這篇關(guān)于find命令的Mommy文章,別忘了看看第二部分的關(guān)于find命令的Daddy文章。

原文地址:http://www.thegeekstuff.com/2009/03/15-practical-linux-find-command-examples/

責(zé)任編輯:黃丹 來(lái)源: oschina
相關(guān)推薦

2013-10-08 16:24:34

Linux find命

2017-12-27 09:40:32

Linuxfind命令

2013-05-23 15:10:34

Netcat

2020-05-20 13:45:52

Linuxtouch命令

2015-03-25 10:36:57

lsLinux

2018-01-02 10:36:29

Linux命令Cheat

2018-08-06 08:51:32

Linux命令cut

2016-09-27 13:12:14

tar命令示例 Unix

2020-04-16 14:20:16

Linuxtouch命令

2015-10-29 13:10:08

passwd命令Linux

2022-11-02 08:32:46

find 命令Linux

2010-06-09 10:35:36

MySQL使用管理命令

2023-11-26 17:54:07

JavaScript開發(fā)

2019-11-18 09:19:59

Vim命令模式

2024-05-28 08:00:00

Python操作系統(tǒng)命令

2017-12-27 10:20:01

Linux ls命令實(shí)用范例

2014-03-17 17:27:51

Linux mvLinux 命令

2009-08-03 09:20:18

find命令詳解find命令linux find命

2020-09-29 07:18:24

Linuxtee命令

2014-03-10 11:43:45

Linux終端命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)