[关闭]
@CrazyHenry 2018-05-11T18:29:04.000000Z 字数 1425 阅读 992

3.文本处理

xxxxLinux命令行


find文件查找

  1. find ./ \( -name "*cpp" -o -name "*txt" \) -print #找到当前目录下的cpp和txt文件
  2. find ./ \( -name "*cpp" -o -name "*txt" \) #跟上边等价

image_1cd74ed8ovn110k68na83l1uf04b.png-15kB

  1. find . -regex ".*\(\.txt|\.pdf\)$" #正则查找,-regex表示忽略大小写,好像跑不通!
  1. find ./ ! -name "*.txt" -print #取非

image_1cd74seap1e9313o9p9r1i5k149g4o.png-14.1kB

  1. find . -maxdepth 1 -type f #指定搜索深度为1,查找文件类型为f(文件类型)

image_1cd74v4r26kk1sac1h34gu81fo55.png-7.5kB

  1. find . -type d -print //只列出所有目录,-type f 文件 / l 符号链接 / d 目录

image_1cd7520o61fbci712mbea72bq5i.png-8.3kB

二进制文件和文本文件无法直接通过find的类型区分出来;file命令可以检查文件具体类型(二进制或文本):

  1. file 1.cpp

image_1cd7591kr19461gap15s0154v10005v.png-5.1kB

  1. ls -lrt | awk '{print $9}'|xargs file|grep ELF| awk '{print $1}'|tr -d ':' #找到所有二进制文件
  2. ls -lrt | awk '{print $9}'|xargs file|grep ASCII| awk '{print $1}'|tr -d ':' #找到所有文本文件

awk '{print $9}' 表示打印第9个域,然后这个域的结果作为file命令的参数,file之后的结果作为grep的输入,然后grep的结果再作为awk的输入,打印第1个域,然后将第一个域的末尾的:删除

image_1cd75v2h21ap3122r1rks16np1rl26c.png-9.1kB

按时间find

  1. find . -atime 7 -type f -print
  2. find . -atime -7 -type f -print
  3. find . -atime +7 -type f -print

image_1cd78ph4djkr10d418gnmfpcg46p.png-21.3kB

按其他规则find

  1. find . -type f -size +2k # 找到>2k的文件,k/M/G
  2. find . -type f -perm 666 -print #找到具有读写权限的文件
  3. find . -type f -user liyingmin -print #属于用户liyingmin的文件

image_1cd798ubpa1nveobf066v1djh7m.png-18.2kB

注意以上没有指明查找深度的find,都会递归到每个文件夹:
image_1cd79ffrq1b8415a01k8o1luccs93.png-19.7kB

find之后做一些处理

  1. find . -type f -name "*.cc" -delete #删除
  2. find . type f -name "*.cc" | xargs rm #与上同
  3. find . type f -name "*.cc" -exec rm {} \; #与上同

image_1cd79jb6c1b26121n1rllu0dkda0.png-17.1kB

  1. find . -type f -user liyingmin -exec chown weber {} \; #将目录下所有liyingmin的文件变为weber的
  2. #{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名

image_1cd7a91de12v01k3s1qhgg3918scad.png-26.8kB

  1. find . -type f -mtime -7 -name "*.txt" -exec cp {} new \;# 将最近7天修改过内容的文件复制到new文件夹中

image_1cd7bq8pi1ep8140b6hmta21f00aq.png-11.8kB

  1. find . -type f -mtime +10 -name "*.txt" -exec ./commands.sh {} \;# 执行脚本,进更多操作
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注