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(默認為-a,and) 或:-o(or) 無“選項”:-no”選項”
9.1. 查找屬主是dazhu且屬組是root的文件:
[root@dazhu200 ~]# find ./ -user dazhu -a -group root
find: ‘dazhu’ is 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 cp或mv -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. 待續... !...
- #find /etc -type f | xargs grep “dazhu” --color=auto
- find 的邏輯運算符 -a 與 and(且) -o 或 or (和) ! 非 -not
- !取反