[Linux檔案管理之(高階)、⽂件查詢]
阿新 • • 發佈:2021-06-17
[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/路徑下