1. 程式人生 > 實用技巧 >find 查詢檔案或目錄 及du命令

find 查詢檔案或目錄 及du命令

格式

  find /data -type f 
  find /data -type f -name "name"
[root@oldboyedu ~]# find ./ -type f # 查詢當前目錄 並且顯示隱藏檔案  
                                      預設顯示目錄及目錄以下所有符合的檔案

按照名稱查詢

  [root@oldboyedu dir]# find ./ -type f -name "1.txt"	
  ......
* 表示匹配任意的字元
匹配以.txt結尾的檔案

[root@oldboyedu dir]# find ./ -type f -name "*.txt
......

[root@oldboyedu dir]# find ./ -type f -name "[1-3].txt"
......

匹配以.bak結尾的檔案
[root@oldboyedu dir]# find ./ -type f -name "*.bak"
......
?代表任意單個字元 --->  萬用字元匹配   大部分命令都支援
[root@oldboyedu dir]# find ./ -type f -name "1.t?t"		
....
拓展 :
    找出最長的一行的那個個數
      [root@oldboyedu dir]# cat 1.txt
      123456
      123456789
      12
      [root@oldboyedu dir]# cat 1.txt|wc -L
      9

    檢視brt-action-analyze-vmcore的個數
      [root@oldboyedu dir]# echo abrt-action-analyze-vmcore|wc -L
      26
    檢視password的每個單詞出現的個數
      [root@oldboyedu dir]# cat /etc/passwd|sed -r 's#[:\]# #g'|xargs -n1|sort |uniq -c|sort -rn

按照大小查詢

   -size k M G
查詢大於90M的檔案
				 
[root@oldboyedu ~]# find ./ -type f -size +90M		
......
查詢小於90M的檔案
			
[root@oldboyedu ~]# find ./ -type f -size -90M		
......
查詢大於80並且小於90的檔案
-and  並且 
-or   或者
[root@oldboyedu ~]# find ./ -type f -size +80M -and -size -90M  # find預設就是並且關係
                        |
                        | 所以 -and 可省略
                        ↓
[root@oldboyedu ~]# find ./ -type f -size +80M  -size -90M
......

[root@oldboyedu ~]# find ./ -type f -size +80M -or -size +90M
......

按目錄大小

檔案的大小是不會影響目錄的大小
目錄中存放著下級的所有的檔名和目錄名
檔案越多 目錄越大  小檔案過多 inode不夠用
如何找小檔案 目錄越大 小檔案越多

ind ./ -type d -size +1M
       如果過長可用下面			
find dir/ -type f -name "*.txt"|xargs rm

du 檢視當前目錄下檔案大小

[root@oldboyedu ~]# du -h
0	./.pki/nssdb
0	./.pki
0	./dir/oldboy
651M	./dir
731M	.
[root@oldboyedu ~]# du -h dir/
0	dir/oldboy
651M	dir/
[root@oldboyedu ~]# du -h dir/*
651M	dir/all.hosts
0	dir/oldboy
0	dir/oldboy.bak
			
			
[root@oldboyedu ~]# du -h /mnt
9.8G	/mnt
[root@oldboyedu ~]# du -h /mnt/*
9.8G	/mnt/10g.txt

find查詢到的檔案 如何cp rm mv

cp

方法1: 把前面的內容  -i插入 到後面
[root@oldboyedu ~]# find ./ -type f -name "test.sh"|xargs -i cp {} /opt

方法2: 把前面的內容  cp複製 到後面 
[root@oldboyedu ~]# find ./ -type f -name "test.sh" -exec cp {} /tmp \;   ————> ;在這裡㓟特殊含義 用\轉義
			      
方法3: 用反引號  把執行的命令留在原地再供其他命令使用
[root@oldboyedu ~]# cp `find ./ -type f -name "test.sh"` /etc/