1. 程式人生 > 其它 >[Linux檔案管理之(高階)、⽂件查詢]

[Linux檔案管理之(高階)、⽂件查詢]

[Linux檔案管理之(高階)、⽂件查詢]

⽂件管理之:⽂件查詢

⼀、檢視命令所屬⽂件(which命令

which命令  後面跟命令名即可檢視命令所屬位置

[root@localhost ~]# which ip         
/usr/sbin/ip
# ps: ⼀些命令的路徑都被配置到了環境變數PATH⾥
 echo $PATH

二、根據檔案屬性查詢檔案(find命令)

	共用引數:
		-a : 並且    			# 必須滿足兩個的檔案
		-o : 或者                          #   ↓  就是或者的意思 滿足任意一個即可查到
		[root@python test]# find ./ -size -30M -o -size +50M
        ./
        ./txt
        ./txt2
   ------------------------------------------------------
   總用量 122880
-r--r-----. 1 user1 user1 20971520 6月  17 06:32 txt     # 使用者屬主為user1 屬組為user1
-rw-r--r--. 1 root  root  41943040 6月  17 06:32 txt2
-rw-r--r--. 1 root  root  62914560 6月  17 06:32 txt3
[root@afei test]# find /root/ -size +10M     # 正常查詢檔案大小超過10M的有以下6個
/root/test/txt
/root/test/txt2
/root/test/txt3
/root/a/b/c/txt
/root/a/b/c/txt2
/root/a/b/c/txt3
# 按照檔案大小以及屬主來查詢
[root@afei test]# find /root/ -size +10M -user user1    # 按照屬主來查詢就一個(見上面)
/root/test/txt  (結果有1個)

# 按照檔案大小以及屬組來查詢
[root@afei test]# find /root/ -size +10M -group user1   # 按照屬組來查詢也就一個(見上面)
/root/test/txt  (結果有1個)

# 按照檔案大小以及所屬型別查詢
[root@afei test]# find /root/ -size +10M -type f
/root/test/txt
/root/test/txt2
/root/test/txt3
/root/a/b/c/txt
/root/a/b/c/txt2
/root/a/b/c/txt3  (結果有6個)

# 也可以一起使用 檔案大小 所屬型別 以及所屬使用者 以及屬組....
[root@afei test]# find /root/ -size +10M -type f -user user1
/root/test/txt                檔案大小     檔案型別  檔案所屬使用者

1、按檔名查詢

[root@localhost ~]# find /etc -name "ifcfg-eth0"
[root@localhost ~]# find /etc -iname "ifcfg-eth0" # -i忽略⼤⼩寫
[root@localhost ~]# find /etc -iname "ifcfg-eth*"

2、按⽂件⼤⼩

find [查詢的路徑] -size [大小]

[root@localhost ~]# find /etc -size +3M # ⼤於3M
[root@localhost ~]# find /etc -size 3M
[root@localhost ~]# find /etc -size -3M
[root@localhost ~]# find /etc -size +3M -ls # -ls找到的處理動作

3、指定查詢的⽬錄深度:

-maxdepth levels		 #  ↓檔案層級 5 
[root@localhost ~]# find / -maxdepth 5 -a -name "ifcfg-eth0" 

# -a並且,-o或者,不加- a,預設就是-a

4、按時間找(atime,mtime,ctime):

[root@localhost ~]# find /etc -mtime +3 # 修改時間超過3天 
[root@localhost ~]# find /etc -mtime 3 # 修改時間等於3天 
[root@localhost ~]# find /etc -mtime -3 # 修改時間3天以內
	-ctime : 按照建立時間查詢
	-mtime : 按照修改時間查詢
	-atime : 按照訪問的時間查詢

5、設定查詢最高的目錄層級(目錄層級引數必須放在第一位-maxdepth

	# find [檔案路徑]  -maxdepth 指定層級 -a -size 檔案大小
	查詢從指定檔案路徑開始計算層級  -a是並且   -size檔案大小 後面跟指定檔案大小
	不寫預設就是-a 並且的意思
	還有-o 是或者的意思 用得話	得指定
	
	[root@python ~]# find /root/  -maxdepth 3 -a  -size +40M
        /root/txt2
        [root@python ~]# find /root/  -maxdepth 6 -a  -size +40M
        /root/txt2
        /root/a/b/c/txt2

6、按照檔案型別來查詢

# 按照目錄查詢
		[root@python ~]# find /root/ -type d
		# 按照普通檔案來查詢
		[root@python ~]# find /root/ -type f
		# 檢視裝置檔案
		[root@python dev]# find /dev/ -type c
        
-----------------------------------------------------------------------------
[root@localhost ~]# find /dev -type f     # f普通
[root@localhost ~]# find /dev -type d     # d⽬錄
[root@localhost ~]# find /dev -type l     # l連結
[root@localhost ~]# find /dev -type b     # b塊裝置
[root@localhost ~]# find /dev -type c     # c字元裝置
[root@localhost ~]# find /dev -type s     # s套接字
[root@localhost ~]# find /dev -type p     # p管道⽂件

7、按照許可權來查詢

# 解釋一波:

# 	    rw-r--r--
#        6  4  4
#        
#        6 所屬使用者  
#        4 所屬使用者組  
#        4 其他使用者
#        
#        r(4)	: 只讀
#        w(2)	:只寫
#        x(1)	:執行
#  
#  我們可以指定給使用者組裡的一個使用者給他設定許可權  比如只給他讀許可權 例如 6 4 0
# 	-rw--r-----. 1 root user1 20971520 6月  16 17:33 txt
# 	 6   4  0     給user1這個使用者組 設定txt檔案為只讀許可權   
#  而其他使用者沒有任何許可權、那麼他就可以讀取這個檔案  但不能進行其他操作
# 
#  亦或者 不給某個使用者任何許可權 其他使用者許可權正常  例如 6 0 4 
# 	-rw-----r--. 1 root user1 20971520 6月  16 17:33 txt
# 	 6   0  4     不給user1這個使用者組任何許可權 其他使用者設定txt檔案為只讀許可權
#  這個使用者沒有任何許可權  而其他使用者是可讀許可權
#
#
#        [root@python ~]# useradd user1
#        [root@python ~]# useradd user2
#        [root@python ~]# useradd user3
#
#       
#
#        chmod : 修改檔案許可權
#            chmod 755 [檔案路徑]
#        chown : 修改所屬使用者及使用者組
#            chown 使用者.使用者組 [檔案路徑]
#	
#	
#     4  4   0
#    -r--r-----. 1 test user1 20971520 6月  16 17:33 txt
#    -rw-r--r--. 1 root root  41943040 6月  16 17:33 txt1
#    -rwxr-xr-x. 1 root root  62914560 6月  16 17:33 txt2
#    [root@python test]# find ./  -perm 440     # 許可權為440  
#    ./txt
#    [root@python test]# find ./  -perm 644
#    ./txt1
#    ./txt2
#    
#    

chmod : 修改檔案許可權

chmod 755 [檔案路徑]

chown : 修改所屬使用者及使用者組

chown 使用者.使用者組 [檔案路徑]

8、處理查詢結果

#		# 直接跟命令  -跟ls是檢視檔案詳情 
#		[root@python test]# find ./  -perm 755 -ls
#        202362858    0 drwxr-xr-x   2 root     root           41 6月 16 17:59 ./
#        134514204 61440 -rwxr-xr-x   1 root     root     62914560 6月 16 17:33 ./txt2
#		
#		
#		# exec(推薦)
#		# {}:代表前面查詢出來的內容  /opt/ 路徑   \ 為固定搭配
#		find ./ -size +50M -exec cp {} /opt/ \;
#		
#		
#		# 使用管道
#		# xargs是將前面命令執行的結果先用一個{}來儲存,然後用{}取出來處理
#		find ./ -size +50M | xargs -I {} cp {} /mnt/  # cp 複製到/mnt/路徑下