1、最强大的搜索命令:find 查找各种文件的命令
在曲阜等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、网站设计 网站设计制作按需策划,公司网站建设,企业网站建设,品牌网站制作,网络营销推广,外贸网站制作,曲阜网站建设费用合理。
2、在文件资料中查找文件:locate
3、搜索命令所在的目录及别名信息:which
4、搜索命令所在的目录及帮助文档路径:whereis
5、在文件中搜寻字符串匹配的行并输出:grep
6、分页显示一个文件或任何输出结果:more
7、分页显示一个文件并且可以回头:less
8、指定显示前多少行文件内容:head
9、指定显示文件后多少行内容:tail
10、查看一个文件:cat
11、查看文件内容多少字符多少行多少字节:wc
12、排序文件内容:sort
一、根据 文件或目录名称 搜索
find 【搜索目录】【-name或者-iname】【搜索字符】:-name和-iname的区别一个区分大小写,一个不区分大小写
eg:在/etc 目录下搜索名字为init的文件或目录
①、find /etc -name init (精准搜索,名字必须为 init 才能搜索的到)
②、find /etc -iname init (精准搜索,名字必须为 init或者有字母大写也能搜索的到)
③、find /etc -name *init (模糊搜索,以 init 结尾的文件或目录名)
④、find /etc -name init??? (模糊搜索,? 表示单个字符,即搜索到 init___)
二、根据 文件大小 搜索
eg:在根目录下查找大于 100M 的文件
find / -size +204800
这里 +n 表示大于,-n 表示小于,n 表示等于
1 数据块 == 512 字节 0.5KB,也就是1KB等于2数据块
100MB == 102400KB204800数据块
三、根据 所有者和所属组 搜索
①、在home目录下查询所属组为 root 的文件
find /home -group root
②、在home目录下查询所有者为 root 的文件
find /home -user root
四、根据 时间属性 搜索
find 【路径】【选项】【时间】
选项有下面三种:-amin 访问时间
-cmin 文件属性被更改
-mmin 文件内容被修改
时间:+n,-n,n分别表示超过n分钟,n分钟以内和n分钟
eg:在 /etc 目录下查找5 分钟内被修改过属性的文件和目录
find /etc -cmin -5
五、根据 文件类型或i节点 搜索
-type 根据文件类型查找:
f表示文件,d表示目录,l表示软链接
eg:查找 /home 目录下文件类型是目录的
find /home -type d
-inum 根据i节点查找
eg:查找 /tmp 目录下i节点为400342的文件或目录
find /tmp -inum 400342
六、组合条件 搜索
这里有两个参数:
①、-a 表示两个条件同时满足(and)
②、-o 表示两个条件满足任意一个即可(or)
范例:查找/etc目录下大于80MB同时小于100MB的文件
find /etc -size +163840 -a -size -204800
语法:locate【文件名】 -i 不区分大小写
注意:这里和 find 命令是有区别的,find是全盘检索,而locate 是在文件资料库中进行搜索。所以locate命令的执行要比find命令执行速度快很多。但是这里有个问题,文件资料库是需要不断更新的。我们新创建的文件如果不更新 文件资料库,使用 locate 是查找不到的。
updatedb 手动更新资料库,但是对于/tmp目录下的新建文件,是更新不到文件资料库的,因为/tmp目录不属于文件资料库的收录范围。
eg:locate hcf
功能描述:搜索命令所在的目录及别名信息
语法:which【命令】
eg:which ls
功能描述:搜索命令所在的目录及帮助文档路径
语法:whereis【命令】
eg:whereis ls
功能描述:在文件中搜寻字符串匹配的行并输出
语法:grep -iv 【指定字符串】【文件】
-i 不区分大小写
-v 排除指定字符串
eg:查找 /root/install.log 文件中包含 mysql 字符串的行,并输出
grep mysql /root/install.log
本搜索工具,根据用户指定的模式,对目标文件逐行进行匹配检查,打印匹配到的行
grep是在文件中搜索匹配的字符串,是在文件中进行内容搜索,这个命令后面用到的比较多
描述:
分页显示一个文件或任何输出结果
用于查看纯文本文件(较长的)格式
格式:
more[选项] 文件
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
head[必要参数][选择参数][文件]
用于显示指定文件开始多少行内容
命令参数:
-n 10 显示前10行
-n -10 正常输出但不显示最后的10行
eg:显示new.txt的前两行内容
head -n 2 new.txt
head -2 new.txt
tail[必要参数][选择参数][文件]
用于显示指定文件末尾多少行内容
命令参数:
-n 10 显示后面10行
-f 持续刷新显示的内容
eg:显示new.txt的末尾两行内容
tail -n 2 new.txt
tail -2 new.txt
eg:指定从第二行开始显示
tail -n +2 new.txt
描述:一次显示整个文件内容
cat 命令 用于查看纯文本文件(较短)
cat [选项] [文件]…
描述:wc 命令默认情况下会打印换行符数、单词数和字符数。
用法:wc [选项] [文件]
用法:sort [选项] [文件]
转自: Linux下文件搜索、查找、查看命令_黄小小的博客-CSDN博客_linux 搜索
find 命令的基本结构如下:
find [paths] [expression] [actions]
find 命令接受一个或多个 路径 ( paths )作为搜索范围,并在该路径下 递归 地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录。。。直到到达目录树底部。
默认情况下(不带任何搜索条件),find 命令会返回指定目录下的 所有文件 ,所以常常需要通过特定的 expression 对结果进行 筛选 。
find 命令默认的 action 是将所有检索结果打印至标准输出。可以通过自定义 action ,让 find 命令对搜索到的结果执行特定的操作。
这里先不做详细解释,简单地测试下 find 命令:
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。
-name 和 -iname 两个选项都支持 wildcards 。如:
find /usr -name '*.txt' 查找 /usr 目录下所有文件名以 .txt 结尾的文件
find /usr -name '????' 查找 /usr 目录下所有文件名刚好为 4 个字符的文件
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。
如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。
-type 选项最常用的参数如下:
find /usr -type d -name 'python*' 检索 /usr 下所有文件名以 python 开头的 目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
find ~ -type d -empty 检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以“翻转”任何其他的筛选条件,如:
find /usr -type f ! -empty 检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项。
find / -type f -user starky 检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。
有些时候,需要根据文件创建或修改的时间进行检索。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
find /usr -type f -mtime 2 检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项:
find /usr -type f -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。
find / -size +1G 检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索。
如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
find /usr -perm a=rx
很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。
上述的需求可以通过以下命令实现: find / -type f -perm /a=x
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。
-perm 选项也支持数字形式的文件权限标记。
find /usr -perm 644 搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。
find / -maxdepth 3 搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。
实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。
此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。
如检索 /usr 下文件名以 python 开头且类型为目录的文件
find /usr -type d -name 'python*'
该命令等同于:
find /usr -type d -a -name 'python*'
更复杂的组合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
-delete 选项可以用来删除搜索到的文件和目录。
如删除 home 目录下所有的空目录:
find ~ -type d -empty -delete
-exec 选项可以对搜索到的结果执行特定的命令。
如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ';'
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来。
每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。
另一个很重要的用法是,在多个文件中检索某个指定的字符串。
如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ';'
创建 Gzip 格式的压缩文件的命令为: tar -czvf filename.tar.gz list of files
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ';'
实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。
原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。
find / -type file -size +1G -ls 浏览所有 1G 以上大小的文件的详细信息
A Guide to the Linux “Find” Command
find 命令手册 : man find
dc@Gentoo ~/Music $ file feather.mp3
feather.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
用ffmpeg都能查看
常用的命令有好多啊,你刚开始学,不用特意的去记,用到什么学什么就好了。 当然非要列举,下面列举的100条,是来自百度经验上的。 希望对你有帮助。
Linux常用命令大全100条:
1,echo “aa” 》 test.txt 和 echo “bb” 》》 test.txt
//》将原文件清空,并且内容写入到文件中,》》将内容放到文件的尾部
2,chmod go+w -R /home/zhangy //给组用户和其他用户添加写的权限
3,tar -tzvf test.tar.gz //列出归档内容
4,du -ah //查看文件列表大小
5,du -sh //查看所有文件的大小总和
6,echo ‘1+2’|bc -l //数学运算
7,uname -a //查看linux内核等的一些信息
8,badblocks -s /dev/sda //坏道扫描时显示进度
9,time command //查看命令的运行时间
10,ls -lrt //按时间的倒序排序
11,rsync -P //同步时显示进度
12.history -c //清楚历史命令
13,cd - //返回上次目录
14,tree //显示目录树
15,umount -n /mnt/hda2 //强制卸载
16,echo ~/ //显示用户的home目录
17,echo $[5*5] //算术运算
18,echo $((5*5)) //算术运算
19,eval ls;ps aux|grep httpd //这二个命令都能执行
20,free -m //有MB为单位显示内存
21,uptime
//显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
22,加法运算
[root@krlcgcms01 mytest]# let a=34+3;
[root@krlcgcms01 mytest]# echo $a;
23,export //查看所有环境变量
24,echo $PATH //查看单个变量
25,cmp file1 file2 //文件内容比对
26,clear //清屏
27,echo 23423 |awk --re-interval ‘/[0-9]{3,}/’ //如果不加re-interval的话,不显示
28,cal //得到一个整齐的日历格式
29,wc -l //统计行数,wc -w 统计单词
30,echo “AaDCbd23” |tr “[A-Z]” “[a-z]” 大写变小写,echo “AaDCbdc23” |tr -c b-d =
将b-d之外的字符串替换成=
31,echo “ADSF” | iconv -f UTF8 -t GBK //把字符由utf8转成gbk
-f是from和简写,-t好像terminal的简写
32,cat -n file //内容的前面会显示行号
33,chattr +i file //只读,root用户也没法对其进行修改
34,lsattr file //查看文件属性
35,cat /etc/passwd |awk -F: ‘{print $1}’ //查看系统中所有用户
36,cat /etc/group //查看系统中所有的组
37,groups //查前当前用户所在的,所有组
38,usermod -g 组名 用户 //这种方式是覆盖的方式,用的时候要小心,如果用户A性于mysql usermod -g php
mysql这样的话只属于php了
39,usermod -G 组名 用户 //这种方式是增加的方式,如果用户A性于mysql usermod -g php
mysql这样的话,mysql就属于2个组了
40,bc //进入数学计算中去
41,umask 003 u权限是7,g权限是7,其他用户是4,也就是774,777-003=774
42,mkfs -t vfat /dev/hda6 //将移动硬盘里面的一个分区格式化成vfat格式
43,mount /dev/cdrom /media/cdrom //挂载cdrom
44,getent group 532 //通过组ID,来查找组信息
45,last //登录成功用户记录
46,lastb //登录不成功用户记录
47,dump -S /dev/sda2 //查看一下要备份/dev/sda2所要的容量
48,dump -0j -f /dev/hda2/sda2_bak.dump.bz2 /dev/sda2 //将sda2进行备份并压缩
49,restore -t -f /dev/hda2/sda2_bak.dump //查看备份信息
50,restore -r -f /dev/hda2/sda2_bak.dump //还原备份
51,fc-list //查看系统中安装的字体
52,find 。/ -type f -exec grep -q “root” {} ; -exec echo {} ;
//查找目录下文件所包涵的字符串
53,vmstat 5 //每5显示一下次系统信息,cpu,memory,i/o等
54,top 后 在shift + P 所占进程的排序显示
55,top 后 在shift + M 所占内存的排序显示
56,iptraf -g //查看各个接口的流量
57,ostat -d -x /dev/sda2 2 //用iostat查看磁盘/dev/sda2的磁盘i/o情况,每两秒刷新一次
58, paste -sd ‘|||n’ test //文件的每4行转换成1行,并用|隔开
59,lsof -i :22 //知道22端口现在运行什么程序
60,lsof -c abc //显示abc进程现在打开的文件
61,lsof -p 12 //看进程号为12的进程打开了哪些文件
63,route //查看路由信息
64,ifup //开启网卡
65,ifdown //关闭网卡
66,route del -net 172.168.0.0 netmask 255.255.0.0 dev eth0 //删除
172.168这个网段
67,route add -net 172.168.10.0 netmask 255.255.255.0 dev eth0 //增加一个路由
68,netstat -tunl //列出监听的网络服务端口
69,netstat -tun //列出已连接的网络服务端口
70,nmap -sP 172.30.4.0/24 //在这个网段内有多少用户在我的主机上操作,一个不错的安全检查工具
71,vgdisplay //查看系统中的可用空间
72,lvextend -L+20G /dev/tank/part1 //向part1这个分区增加20G的空间
73,lvresize -L-10G /dev/tank/part2 //向part2这个分区减少10G的空间
74,pvdisplay //查看磁盘信息
75,mplayer -loop 10 /mnt/song/music/花儿开了.mp3 //循环播放10遍
76,pacman -S firefox -nd //nd去掉依赖
77,wget -c //断点下载
78,chroot /mnt/ubuntu //改变根目录到/mnt/ubuntu
79,ctrl+a //命令行下,光标称动到开头
80,ctrl+e //命令行下,光标移动结尾
81,cut -d: -f 1-4 test //用:分割文件,取分割后的1-4列
82,file /home/zhangy/test.php //用于查看文件的一些基本信息
83,touch test.txt //创建一个空文件 text.txt
84,htpasswd -cbd /usr/local/nginx/conf/authfile //创建访问控制文件
85,df //查看磁盘空间,和当前的磁盘数
86,fdisk -l //查看所有磁盘数
87,alsamixer //进入后,m键可以实现静音
88,killall httpd //把所有httpd进程杀掉
89,killall -9 mysqld_safe //有些进程超级用户也停止不了,-9是强制删除
90,mirror /mysql //下载mysql目录
91,mirror -R /mysql //上传mysql目录
92,rmmod pcspkr //关掉tab提示音
93,modprobe pcspkr //开启tab提示音
94,gpasswd -a zhangy wheel //将zhangy这个用户添加到wheel这个组
95,dd if=/dev/zero of=/virtual/ubuntu.virt.img bs=1M count=4096
//创建一个4G的IMG镜像
96,lspic //显示pci设备
97,lsusb //显示usb设备
98,history | less //less根more有点像,感觉less用着更舒服点
99,ln -s //如果忘了-s就变成硬链接了
100,tar zxvf test.tar.gz -C /home/zhangy //将内容解压到指定目录
常用的7个Linux文件内容查看命令:
1.cat由第一行开始显示文件内容
用法:
cat-A 相当于-vET的整合选项,可列出一些特殊字符而不是空白;
cat-b 列出行号,仅针对非空白行做行号显示,空白行不标行号;
cat-E 将结尾的断行字节$显示出来;
cat-n 列印出行号,连同空白行也会有行号,与-b的选项不同;
cat-T 将[tab]按键以^I显示出来;
cat-v 列出一些看不出来的特殊字符;
2.tac 由最后一行开始显示文件内容
tac-b 在行前而非行尾添加分隔标志;
tac-r 将分隔标志视作正则表达式来解析;
tac-s 使用指定字符串代替换行作为分隔标志;
3.nl 显示行号
nl-b a 无论是否为空行,均列出行号;
nl-b t 空行不列出行号;
nl-n ln 行号在荧幕的最左方显示;
nl-n rn 行号在自己栏位的最右方显示,且不加0;
nl-n rz 行号在自己栏位的最右方显示,且加0;
nl-w 行号栏位的占用的位数;
4.more 一页一页的显示文件内容
在more程序运行过程中,可以按以下键:
空白键(space):代表向下翻一页;
Enter:代表向下翻『一行』;
/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f:立刻显示出档名以及目前显示的行数;
q:代表立刻离开more,不再显示该文件内容。
b或[ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用。
5.less与more类似,但是比more更好的是,他可以往前翻页
less运行时可以输入的命令有:
空白键:向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]:向上翻动一页;
/字串:向下搜寻『字串』的功能;
?字串:向上搜寻『字串』的功能;
n:重复前一个搜寻(与/或?有关!);
N:反向的重复前一个搜寻(与/或?有关!);
q:离开less这个程序;
6.head 显示前几行
语法:
head-n 后面接数字,代表显示行数;
7.tail 显示后几行
tail-n 后面接数字,代表显示行数;
tail-f 表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测;
find 命令的基本结构如下:
find 命令手册 : man find
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。
-name 和 -iname 两个选项都支持 wildcards 。如:
例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件
例2:查找 /usr 目录下所有文件名刚好为 4 个字符的文件
例3:查以大写字母开头的文件
例4:查以两个小写字母和两个数字开头的txt文件
类似的还有:
-lname -ilname
-path -ipath
-regx -iregx
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。
例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
例2:在当前目录除aa之外的子目录内搜索 txt文件
例3:在当前目录,不再子目录中,查找txt文件
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。
-type 选项最常用的参数如下:
例:检索 /usr 下所有文件名以 python 开头的目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
例:检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:
也可以“翻转”任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项。
例:检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。
有些时候,需要根据文件创建或修改的时间进行检索。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项。
查找比 aa.txt 新 的文件
查找比 aa.txt 旧 的文件
查找比aa.txt新,比bb.txt旧的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。
检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索。
9.1使用符号形式
例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。
上述的需求可以通过以下命令实现:
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。
9.2使用数字形式
例如:搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。
例如:搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。
实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。
此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。
如检索 /usr 下文件名以 python 开头且类型为目录的文件
该命令等同于:
更复杂的组合形式如:
例4:在除dir0及子目录以外的目录下查找txt后缀文件
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
-delete 选项可以用来删除搜索到的文件和目录。
例如:删除 home 目录下所有的空目录:
-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令。形式为 command {} \; ,注意{}与\;之间有空格 。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。
例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 \ 。
例2:查看当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
例3:在多个文件中检索某个指定的字符串。如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
创建 Gzip 格式的压缩文件的命令为:
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。
例如:浏览所有 1G 以上大小的文件的详细信息
与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
与 exec 作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
例1:查找以ap或may开头的文件
例2:查硬连接数大于2的文件或目录
例3:查找含特定字符串的文件。查找当前目录下含有"the string you want find…"字符串的文件:
例4:从根目录开始查tmpfile,一旦查到马上删除
例5:如何用find查找某一天更改的文件?可以使用这一行命令来实现:
A Guide to the Linux “Find” Command