linux系統find命令詳解+xargs命令 、exec命令

find

做用:查找文件java

1.name: 指定文件名

例子1. 找到以du結尾的文件node

╭─root@localhost.localdomain ~  
╰─➤  find / -name "*du" |  head -3              
/var/lib/AccountsService/users/du
/var/db/sudo/du
/var/spool/mail/du

例子2:找到包含du的文件bash

╭─root@localhost.localdomain ~  
╰─➤  find / -name   "*du*" | head -3
./.oh-my-zsh/themes/duellj.zsh-theme
./.zcompdump-localhost-5.0.2
./apr-1.5.2/file_io/os2/filedup.c

2. perm:指定文件權限

例子1:找到全部644權限的文件dom

╭─root@localhost.localdomain ~  
╰─➤  find / -perm 644 | head -3
/boot/grub/splash.xpm.gz
/boot/.vmlinuz-3.10.0-514.el7.x86_64.hmac
/boot/config-3.10.0-514.el7.x86_64
╭─root@localhost.localdomain ~  
╰─➤  ll /boot/grub/splash.xpm.gz
-rw-r--r--. 1 root root 1.4K 11月 16 2011 /boot/grub/splash.xpm.gz

例子2:模糊匹配644權限gradle

╭─root@localhost.localdomain ~  
╰─➤  find / -perm -644 | head -3 
/boot/grub
/boot/grub/splash.xpm.gz
/boot/.vmlinuz-3.10.0-514.el7.x86_64.hmac

3. exec: 執行命令

例子1:刪除無屬主的文件日誌

╭─root@localhost.localdomain ~  
╰─➤  find / -nouser -exec rm -rf {} \;

3:xargs

╭─root@localhost.localdomain /home  
╰─➤  ls
du
╭─root@localhost.localdomain /home  
╰─➤  touch {1..20}cjk
╭─root@localhost.localdomain /home  
╰─➤  ls
10cjk  12cjk  14cjk  16cjk  18cjk  1cjk   2cjk  4cjk  6cjk  8cjk  du
11cjk  13cjk  15cjk  17cjk  19cjk  20cjk  3cjk  5cjk  7cjk  9cjk
╭─root@localhost.localdomain /home  
╰─➤  find /home -name "*cjk" | xargs rm -rf
╭─root@localhost.localdomain /home  
╰─➤  ls
du

4.find能夠使用-a和-o或!

-a 是並且的意思
-o 是或者的意思code

例子1:找到全部權限是644的普通文件blog

╭─root@localhost.localdomain /home  
╰─➤  find / -type f -a -perm 644 | head -3
/boot/grub/splash.xpm.gz
/boot/.vmlinuz-3.10.0-514.el7.x86_64.hmac
/boot/config-3.10.0-514.el7.x86_64

例子二:找到以du開頭或以du結尾的普通文件ci

╭─root@localhost.localdomain /home  
╰─➤  find / -name "du*" -o -name  "*du" -a -type f

必要時能夠用(),可是須要用"\"轉義rem

刪除日誌文件(9號機桌面有命令)
find /alidata/www/logs/java/ebs/sys -mtime +7 -type f \( -name "task.log.*" -o -name "dubbo.log.*" -o -name "task-removeSnapshot.log.*" -o -name "service.log.*" -o -name "grandcanal_heartbeat,log,*" -o -name "grandcanal_thread.log.*" \) | xargs rm -f ;

5. user:指定屬主

例子1:找到etc目錄下屬主是root的文件

╭─root@localhost.localdomain ~  
╰─➤  find /etc  -user  root | head -3
/etc/
/etc/fstab
/etc/crypttab

6.group:指定屬組

例子1:

╭─root@localhost.localdomain ~  
╰─➤  find /etc  -group  root | head -3
/etc
/etc/fstab
/etc/crypttab

7. nouser:指定無屬主

例子1:

╭─root@localhost.localdomain ~  
╰─➤  find -nouser  | head -5
./httpd-2.4.20
./httpd-2.4.20/.deps
./httpd-2.4.20/.gdbinit
./httpd-2.4.20/ABOUT_APACHE
./httpd-2.4.20/acinclude.m4
╭─root@localhost.localdomain ~  
╰─➤  ll ./httpd-2.4.20/.deps
-rw-r--r--. 1 501 games 0 5月  23 20:33 ./httpd-2.4.20/.deps

8. nogroup:指定無屬主

╭─root@localhost.localdomain ~  
╰─➤  find -nogroup

9.type:指定文件類型

-type         #文件類型

主要的文件類型:
     f        #普通文件
     d        #目錄
     b        #塊設備
     s        #套接字
     c        #字符設備
     l        #連接
     p        #管道

例子1:找到全部的連接文件

╭─root@localhost.localdomain ~  
╰─➤  find / -type l | head -3
/dev/cdrom
/dev/snd/by-path/pci-0000:02:02.0
/dev/initctl
╭─root@localhost.localdomain ~  
╰─➤  find -type l | head -3
./.oh-my-zsh/plugins/fedora/fedora.plugin.zsh
./.oh-my-zsh/plugins/go/go.plugin.zsh
./.oh-my-zsh/plugins/gradle/_gradle
╭─root@localhost.localdomain ~  
╰─➤  ll ./.oh-my-zsh/plugins/fedora/fedora.plugin.zsh
lrwxrwxrwx. 1 root root 21 4月  19 11:20 ./.oh-my-zsh/plugins/fedora/fedora.plugin.zsh -> ../dnf/dnf.plugin.zsh

例子2: 找到全部普通文件

╭─root@localhost.localdomain ~  
╰─➤  find -type f | head -3
./.bash_logout
./.bash_profile
./.bashrc

10. size:指定文件大小

例子1:找到大於100M的文件

╭─root@localhost.localdomain ~  
╰─➤  find / -size +100M
/proc/kcore
/run/media/root/CentOS 7 x86_64/LiveOS/squashfs.img
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/usr/lib/locale/locale-archive
╭─root@localhost.localdomain ~  
╰─➤  ls -lh /usr/lib/locale/locale-archive            
-rw-r--r--. 1 root root 102M 4月  18 21:35 /usr/lib/locale/locale-archive

11. mtime: (modify time)指文件修改時間(天)

例子1:找到文件修改時間一天以上的

[root@ken ~]# find / -mtime +1 | head -3
/boot
/boot/efi
/boot/efi/EFI
[root@ken ~]# stat /boot
File: ‘/boot’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 64 Links: 5
Access: (0555/dr-xr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-05-24 19:31:37.453000000 +0800
Modify: 2019-02-26 22:25:57.574000000 +0800
Change: 2019-03-14 18:49:48.066000000 +0800
Birth: –

12. atime:(access time)指定文件訪問時間(天)

例子:找到訪問時間1天以上的

[root@ken ~]# find / -atime +1 | head -3
/boot/grub2/device.map
/boot/grub2/i386-pc/gcry_rmd160.mod
/boot/grub2/i386-pc/acpi.mod
^C
[root@ken ~]# stat /boot/grub2/device.map
File: ‘/boot/grub2/device.map’
Size: 64 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 1572929 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-02-26 22:25:05.730000000 +0800
Modify: 2019-02-26 22:25:05.582000000 +0800
Change: 2019-02-26 22:25:05.582000000 +0800
Birth: –

13.ctime:(create time)指定建立時間(天)

例子1:指定文件建立時間一天以上

[root@ken ~]# find / -ctime +1 | head -3
/boot
/boot/efi
/boot/efi/EFI
^C^
[root@ken ~]# stat /boot
File: ‘/boot’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 64 Links: 5
Access: (0555/dr-xr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-05-24 19:31:37.453000000 +0800
Modify: 2019-02-26 22:25:57.574000000 +0800
Change: 2019-03-14 18:49:48.066000000 +0800
Birth: –

相關文章
相關標籤/搜索