百人计划

linux基础篇08-测试常见linux命令集合八

2020-03-27  本文已影响0人  筱媛媛

本篇主要接着上一篇文章继续就“测试常见linux命令集合八”进行展开讲解,主要包括“find”命令的各种用法。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

39:命令find
find [查找路径][options][查找条件] [处理动作]
find  path -option [-print ] [ -exec -ok command ]  {} \;
说明:在指定目录下查找文件
参数:
-type     根据文件类型查找(b/d/c/p/l/f 依次表示:块设备、目录、字符设备、管道、符号链接、普通文件)
-name     根据文件名称查找
-user     根据文件属主查找
-perm     根据文件权限查找
-print    将find找到的文件输出到标准输出
-size  n  根据文件的大小取查找(-n指小于大小为n的文件;+n指大于大小为n的文件)
-mtime n  根据文件更改时间查找(-n指n天以内修改的文件;+n指n天以前修改的文件)
-atime n  根据文件读取时间查找(-n指n天以内修改的文件;+n指n天以前修改的文件)
-ctime n  根据文件修改时间查找(-n指n天以内修改的文件;+n指n天以前修改的文件)
注意:
(1)查找路径:默认为当前目录
(2)查找条件:默认为查找指定路径下的所有文件
(3)处理动作:默认为显示,可以接-ls,相当于ll显示文件
文件名通配符:
“*”: 通配任意的字符,可以是任何东西。
”?”: 可表示任意单个字符
”[]”:表示通配括号里面的任意一个字符,注意[]里面的内容会被解析成单个字符

01:在当前目录及子目录下查找所有扩展名为“ini”的文件find ./ -name *.ini"

[anxin@VM_0_5_centos isTester]$ find ./ -name "*.ini"
./isTester.ini
./usr/isTester/isTester.ini
./sort.ini

02:在isTester目录及子目录下查找所有名字为isTester.ini的文件find ./isTester/ -name isTester.ini

[anxin@VM_0_5_centos ~]$ find ./isTester/ -name isTester.ini
./isTester/isTester.ini
./isTester/usr/isTester/isTester.ini
./isTester/etc/isTester.ini

03:在当前目录及子目录下查找所有大于50M的文件find ./ -size +50M

[anxin@VM_0_5_centos ~]$ find ./ -size +50M
./isTester/tomcat6755.hprof
./tomcat6755.hprof
./heap.bin

04:在isTester/usr目录下查找空文件和文件夹find ./isTester/usr/ -empty

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -empty
./isTester/usr/isTester/isTester
./isTester/usr/isTester/isTester.tar
./isTester/usr/isTester/idoxu/istester/2020

05:在isTester/usr目录下查找更改时间在2日以内的文件find ./isTester/usr/ -mtime -2

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -mtime -2
./isTester/usr/isTester/isTester1
./isTester/usr/isTester/isTester2
./isTester/usr/isTester/isTester3

06:在isTester/usr目录下查找更改时间在3日以前的文件find ./isTester/usr/ -mtime +3

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -mtime +3
./isTester/usr/
./isTester/usr/isTester
./isTester/usr/isTester/isTester

07:在isTester/usr目录下查找所有的目录find ./isTester/usr/ -type d

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type d
./isTester/usr/
./isTester/usr/isTester
./isTester/usr/isTester/isTester1
./isTester/usr/isTester/isTester2
./isTester/usr/isTester/isTester3

08:在isTester/usr目录下查找所有的文件find ./isTester/usr/ -type f

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type f
./isTester/usr/isTester/isTester.tar
./isTester/usr/isTester/isTester.ini
./isTester/usr/isTester/idoxu.tar

09:在isTester/usr目录下查找权限为777的文件和文件夹find ./isTester/usr/ -perm 777

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/  -perm 777
./isTester/usr/
./isTester/usr/ido.tar.bz2

10: 在isTester/usr目录下查找以大写字母开头的文件和文件夹find ./isTester/usr/ -name "[A-Z]*"

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/  -name "[A-Z]*" 
./isTester/usr/Test
./isTester/usr/TXT.tar
./isTester/usr/TXT.tar.gz

11:在当前目录中搜索文件内容带“isTester”的字符串find ./ -type f |xargs grep "isTester"

[anxin@VM_0_5_centos ~]$ find ./ -type f |xargs grep "isTester"
匹配到二进制文件 ./isTester/Test.tar
匹配到二进制文件 ./isTester/isTester.tar
./isTester/isTester.ini:isTester1
./isTester/isTester.ini:isTester2
./isTester/isTester.ini:isTester3

12:在isTester/usr目录下查找文件长度为0的普通文件并列出它们的完整路径find ./isTester/usr/ -type f -size 0|xargs ls -l

或:find ./isTester/usr/ -type f -size 0 -exec ls -l {} \;

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type f -size 0|xargs ls -l
-rw-rw-r-- 1 anxin anxin 0 3月  14 23:01 ./isTester/usr/1.png
-rwxrwxr-x 1 anxin anxin 0 3月  14 16:46 ./isTester/usr/1.txt
-rwxrwxr-x 1 anxin anxin 0 3月  14 16:47 ./isTester/usr/2.ini

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type f -size 0 -exec ls -l {} \;
-rw-rw-r-- 1 anxin anxin 0 3月  14 23:01 ./isTester/usr/1.png
-rwxrwxr-x 1 anxin anxin 0 3月  14 16:46 ./isTester/usr/1.txt
-rwxrwxr-x 1 anxin anxin 0 3月  14 16:47 ./isTester/usr/2.ini

13:在isTester/usr目录下查找.log文件且包含“error”的行find ./isTester/usr/ -type f -name "*.log" | xargs grep -r "error"

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type f -name "*.log" |xargs grep -r "error" 
./isTester/isTester.log:error
./isTester/isTester.log:error-申请核保失败

14:在当前目录下删除1天以内的所有东西find ./ -mtime -1 -print |xargs rm -rf

特别申明:如果当前目录内容发生任何变动,则代表本目录的.时间会发生变化。如果此时删除当前目录1天以内的所有东西则会提示“rm: 无法删除目录:"."”,因此想要避免此问题可以使用./*

./*:指除了本目录“.”以外的所有文件

[anxin@VM_0_5_centos etc]$ ls -al --full-time
总用量 12
drwxrwxr-x 3 anxin anxin 4096 2020-03-28 00:12:49.000000000 +0800 .
drwxrwxr-x 5 anxin anxin 4096 2020-03-28 00:03:44.000000000 +0800 ..
drwxrwxr-x 2 anxin anxin 4096 2020-03-15 10:40:11.000000000 +0800 idoxu
-rw-rw-r-- 1 anxin anxin    0 2020-03-24 23:24:26.000000000 +0800 isTester.ini
[anxin@VM_0_5_centos isTester]$ find ./* -mtime -1 -print | xargs rm -rf
[anxin@VM_0_5_centos isTester]$ ll
总用量 4
drwxrwxr-x 2 anxin anxin 4096 3月  20 13:26 isTester

15:在当前目录删除8天以前的所有东西(不含“.”)find ./* -mtime +8 -print |xargs rm -rf

[anxin@VM_0_5_centos WWW]$ find ./* -mtime +8 -print |xargs rm -rf
[anxin@VM_0_5_centos WWW]$ ll
总用量 0

16:在当前目录删除8天以前的所有东西(不含“.”)find ./* -mtime +8 -print -delete

[anxin@VM_0_5_centos WWW]$ find ./* -mtime -1 -print -delete
./1/2/3
./1/2
./1/1.txt
./1

17:删除文件大小为零的文件find ./ -size 0 | xargs rm -rf

[anxin@VM_0_5_centos Test]$ ll
总用量 0
-rw-rw-r-- 1 anxin anxin 0 3月  25 00:46 isTester1
-rw-rw-r-- 1 anxin anxin 0 3月  25 00:46 isTester2
-rw-rw-r-- 1 anxin anxin 0 3月  25 00:46 isTester3
[anxin@VM_0_5_centos Test]$ find ./* -size 0 | xargs rm -rf
[anxin@VM_0_5_centos Test]$ ll
总用量 0

18:-a、-o、-not(也就是与、或、非)

(1)-a:连接两个不同的条件(即两个条件必须同时为真)
(2)-o:连接两个不同的条件(两个条件只要满足一个即可)
(3)-not:对条件进行取反
例如:查找0-3k大小的文件
[anxin@VM_0_5_centos ~]$ find ./isTester/usr -size +0 -a -size -3k
./isTester/usr/isTester/isTester.ini
./isTester/usr/isTester/y.tar
./isTester/usr/isTester/isTester2020.tar.gz
./isTester/usr/ido.tar.bz2
./isTester/usr/test.tar.gz

19:在isTester/usr目录下查找更改时间在7日以前的文件并在删除之前询问它们find ./isTester/usr/ -type f -mtime +7 -ok rm {} \;

[anxin@VM_0_5_centos ~]$ find ./isTester/usr/ -type f -mtime -1 -ok rm {} \;
< rm ... ./isTester/usr/1 > ? y
< rm ... ./isTester/usr/2 > ? y
< rm ... ./isTester/usr/3 > ? y

20:在isTester/usr目录下查找大于10k的.conf文件将其复制到 isTester/conf 目录下find ./isTester/usr/ -type f -name '*.conf' -size +10k -exec cp {} /root/conf/ \;

注意:

(1)-exec对搜索到的文件执行特定的操作。固定格式为:-exec 'commond' {} \;

(2)find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批并如此继续下去

(3)find ./* -mtime -1 -exec rm -rf {} \;先删除当前目录下的东西然后将结果查询出来

linux命令光看理论知识不行,得多动手敲且去练习。努力敲命令的你真好看~~~
上一篇下一篇

猜你喜欢

热点阅读