(linuxshell)第二章--命令之乐(一)


文章来自于我的个人博客:(linux shell)第二章--命令之乐(一)

上一章我们描述了一些linux shell中需要注意的一些语法,接下来我们开始了解linux shell的常用命令。let's go...

    cat 命令:

    cat本身表示拼接(concatenate)。cat命令有一些常用参数,像-n,-s等,我们下面逐一介绍:

    如果你想快速查看一个文本文件内容,就可以使用cat命令:

    cat file

    如果你想一次查看多个文件内容,也是在后面加上文件路径即可

    cat file1 file2 file3

    如果想显示文本文件的行号,则使用参数-n:

    cat -n file 或者 cat -n file1 file2 file3

    如果想去掉文本中的空行,则使用参数 -s:

    cat -s file 或者 cat -s file1 file2 file3 当然这里也可以使用tr命令来益处空白行:cat file | tr -s ''; 这个tr命令的意思是说将多个换行符当作一个换行符来看待。

    find 命令:

    find命令是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。

    基本语法:

    find . -print #打印出带有路径的当前目录下的所有文件路径

    \

    find命令也有很多参数,我们下面来看一些常用参数的用法:

    1).根据文件名或者正则表达式匹配搜索

    find . -name "*.sh" -print #从当前目录查找所有符合以sh结尾的文件,并打印到终端

    \

    -name还有一个对应的-iname来忽略关键字的大小写

    find . -iname "*.sh" -print<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgICAyKS64+b7dwre+tsalxeQ8L3A+CjxwPiAgICAgICAgICAgICAgICBmaW5kIC4gLXBhdGggJnF1b3Q7KnRlc3QqJnF1b3Q7IC1wcmludCAgI7TTtbHHsMS/wry/qsq8o6yy6dXSwre+tsew17rKx3Rlc3S1xMv509DCt7620tS8sLTy06Gz9tXi0KnEv8K8z8K1xM7EvP48L3A+CjxwPiAgICAgICAgICAgICAgICA8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140726/2014072609082097.png" title="2014-07-25-154836_624x809_scrot.png" alt="\">

    3).基于正则表达式的匹配 -regex

    find . -regex ".*\.py$" -print

    \

    4).否定参数 !

    如果想要查找不包含条件的文件,则在类型前面加上!即可:

    find . ! -name "*.sh" -print

    \

    5).给予目录深度的搜索 -maxdepth 和-mindepth

    我们可以通过这个命令来限制find向下查找的深度

    find . -maxdepth 1 -type f -print #在当前目录的当前目录查找是文件类型的文件,也就是查找时它不会向下遍历

    \

    -maxdepth和-mindepth应该作为find的第三个参数出现,如果作为第四个或者之后的参数出现,就可能会影响到find的效率,因为 它不得不进行一些不必要的检查。

    ? ?6).根据文件类型搜索 -type

    ? ? ?find . -type d -print #只列出所有的目录

    ? ? ?\

    ? ? ?find . -type f -print #只列出所有的文件

    ? ? ?find . -type l -print #只列出所有的链接

    ? ?7).根据文件的时间搜索 -mtime(修改时间) -atime(访问时间) -ctime(变化时间),时间用+,-来表示时间的前后

    ? ? ?find . -type f -atime -7 -print #打印出在最近7天内被访问的所有文件

    ? ? ?\

    ? ? -amin(访问时间),-mmin(修改时间),-cmin(变化时间)

    ? ? ?find . -type f -amin +7 -print #打印出访问时间超过7分钟的所有文件

    ? ? ?find . -type f -newer file.sh -print #找出比file.sh修改时间更长的所有文件

    ? ?8),基于文件大小的搜索 -size

    ? ? ?find . -type f -size +2k #查找大于2KB的所有文件,除了k之外,还可以使用b--块,c--字节,w--字,M--兆字节,G--吉字节

    ? ? ?

    ? ? ?find . -type f -size 2k #大于等于2KB的文件

    ? ? ?find . -type f -size -2k #小于2KB的文件

    ? ?9).匹配操作

    ? ? ?find . -name "*.sh" -delete #删除匹配的所有文件(甚用)

    ? 10).基于文件权限和所有权的匹配 --perm

    ? ? ?find . -type f -perm 644 -print #打印出权限为644的文件

    ? 11).结合find执行命令或动作

    ? ? ?find命令可以借助选项-exec与其他命令进行结合,-exec算得上是find最强大的特性之一。

    ? ? ?find . -type f -user root -exec chown test {} \; 这个命令中,{}是一个特殊字符串,与-exec选项结合使用。对于每个匹配的文件,{}会被替换成相应的文件名。在上面的命令中,先查找文件所属是root用户的所有文件,然后给test用户添加权限。

    ? ? ?find . -type f -name "*.sh" -exec cat {} \; > all_sh_files.txt 这个命令是先查出所有的sh文件,然后将文件的内容都加到文本文件中。?

相关内容