教你使用zsh之=======zsh的文件名替换和自动补全

本节,我们着重介绍zsh的文件名替换和自动补全功能

注意:这里的许多命令可以用其他的命令来实现,比如说ls -r做一个递归的搜索,但是我们的目的仅仅是介绍zsh,我们的目的是用zsh来实现同样的目的

例子1 显示所有以.pdf结尾的文件

当前路径

ls *.pdf

好的,热身一下,进入第二节

例子2 显示所有在当前路径以及所有子目录下以.pdf结尾的文件

ls **/*.pdf

**/告诉zsh要在当前目录和当前目录下的子目录里进行搜索

限定词的使用

他可以选择出特定的文件类型.你可以用”.”表示一般文件,”/”代表路径,”*“代表所有的可执行文件,”@”代表链接文件,”=”代表sokcets,”p”代表管道,”%”代表设备文件,”%代表”设备块文件,”%c”代表字符文件

例子3:显示当前目录以及子目录下的所有文件名包含”TEST”的普通文件

ls **/*test*(.) // (.)表示普通文件

文件权限,

文件的权限(r) (w) (x) ,对应文件属主读,写,可执行.对应组是(A), (I) and (E) ,对应其他用户(R),(W),(X)

例子4 前目录以及子目录下所有可执行文件

ls **/*(.x) //(.x)显示被文件属主拥有的可执行文件

例子5 当前目录以及子目录下所有对组没有写权限的普通文件

ls **/*(.:g-w:) //这里我们使用"chmod 样式",在g-w的首尾添加":"

用户和用户组

只检测你自己的用户和主组(U) (G),若是其他用户的需要添加用户ID或者组ID给(u)或者(g)

例子6查找所有属于你所在主要组的文件

ls -l **/*(.G) //(G)表示是主组

例子7 找出所有tomcat用户的文件

ls -l **/*(u:tomcat:)

通常情况下,使用u时应该指定uid,但是如果愿意使用用户名的话,可以使用这样的语法”:username:”

修改和查看时间

zsh可通过修改和访问时间找出文件,对应的选项是(m)(a).你还可以搜索确切的时间,或者使用"-"或者"+"来表示相对于现在的时间.默认时间单位是天,你可以指定:月(M),星期(w),小时(h),mintues(m),秒(s)

例子8: 找出你上个月查看过的文件

ls **/*(.aM-1) 

文件大小

文件大小通过”L”来表示,通常是以字节记,当然也可以用k,m,512字节块(p)

例子9 找出所有文件大小大于10m的

ls **/*(.Lm+10)

综述:

这些符号可以随意组合.你可以^来反转字符的意思.查看man手册来查看更多文件符.以及排列输出的多钟方式

终极任务:

找出root用户拥有的(u0),其他用户可写(W),大于10K(LK+10),1小时内修改过(M10)的文件

ls **/*(u0WLk+10m0)

via{[here](http://www.linuxaria.com/howto/globbing-con-zsh?lang=en&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Linuxaria_En+(Linuxaria%C2%BB+English))}