find文件查找解析.docx
- 文档编号:1259347
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:14
- 大小:19.47KB
find文件查找解析.docx
《find文件查找解析.docx》由会员分享,可在线阅读,更多相关《find文件查找解析.docx(14页珍藏版)》请在冰豆网上搜索。
find文件查找解析
find文件查找
查找txt和pdf文件
1
find.(-name"*.txt"-o-name"*.pdf")-print
正则方式查找.txt和pdf
1
find.-regex".*(.txt|.pdf)$"
-iregex:
忽略大小写的正则
否定参数
查找所有非txt文本
1
find.!
-name"*.txt"-print
指定搜索深度
打印出当前目录的文件(深度为1)
1
find.-maxdepth1-typef
定制搜索
按类型搜索:
1
find.-typed-print//只列出所有目录
-typef文件/l符号链接
按时间搜索:
-atime访问时间(单位是天,分钟单位则是-amin,以下类似)
-mtime修改时间(内容被修改)
-ctime变化时间(元数据或权限变化)
最近7天被访问过的所有文件:
1
find.-atime7-typef-print
按大小搜索:
w字kMG
寻找大于2k的文件
1
find.-typef-size+2k
按权限查找:
1
find.-typef-perm644-print//找具有可执行权限的所有文件
按用户查找:
1
find.-typef-userweber-print//找用户weber所拥有的文件
找到后的后续动作
删除:
删除当前目录下所有的swp文件:
1
find.-typef-name"*.swp"-delete
执行动作(强大的exec)
1
find.-typef-userroot-execchownweber{};//将当前目录下的所有权变更为weber
注:
{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
eg:
将找到的文件全都copy到另一个目录:
1
find.-typef-mtime+10-name"*.txt"-execcp{}OLD;
结合多个命令
tips:
如果需要后续执行多个命令,可以将多个命令写成一个脚本。
然后-exec调用时执行脚本即可;
1
-exec./commands.sh{}\;
-print的定界符
默认使用’n'作为文件的定界符;
-print0使用”作为文件的定界符,这样就可以搜索包含空格的文件;
grep文本搜索
grepmatch_pattenfile//默认访问匹配行
常用参数
-o只输出匹配的文本行VS-v只输出没有匹配的文本行
-c统计文件中包含文本的次数
1
grep-c"text"filename
-n打印匹配的行号
-i搜索时忽略大小写
-l只打印文件名
在多级目录中对文本递归搜索(程序员搜代码的最爱):
1
grep"class".-R-n
匹配多个模式
1
grep-e"class"-e"vitural"file
grep输出以作为结尾符的文件名:
(-z)
1
grep"test"file*-lZ|xargs-0rm
xargs命令行参数转换
xargs能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。
比如grep,比如find;
将多行输出转化为单行输出
catfile.txt|xargs
n是多行文本间的定界符
将单行转化为多行输出
catsingle.txt|xargs-n3
-n:
指定每行显示的字段数
xargs参数说明
-d定义定界符(默认为空格多行的定界符为n)
-n指定输出为多行
-I{}指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时
eg:
1
catfile.txt|xargs-I{}./command.sh-p{}-1
-0:
指定为输入定界符
eg:
统计程序行数
1
findsource_dir/-typef-name"*.cpp"-print0|xargs-0wc-l
sort排序
字段说明:
-n按数字进行排序VS-d按字典序进行排序
-r逆序排序
-kN指定按第N列排序
eg:
1
2
sort-nrk1data.txt
sort-bddata//忽略像空格之类的前导空白字符
uniq消除重复行
消除重复行
1
sortunsort.txt|uniq
统计各行在文件中出现的次数
1
sortunsort.txt|uniq-c
找出重复行
1
sortunsort.txt|uniq-d
可指定每行中需要比较的重复内容:
-s开始位置-w比较字符数
用tr进行转换
通用用法
1
2
echo12345|tr'0-9''9876543210'//加解密转换,替换对应字符
cattext|tr't'''//制表符转空格
tr删除字符
1
catfile|tr-d'0-9'//删除所有数字
-c求补集
1
2
catfile|tr-c'0-9'//获取文件中所有数字
catfile|tr-d-c'0-9n'//删除非数字数据
tr压缩字符
tr-s压缩文本中出现的重复字符;最常用于压缩多余的空格
1
catfile|tr-s''
字符类
tr中可用各种字符类:
alnum:
字母和数字
alpha:
字母
digit:
数字
space:
空白字符
lower:
小写
upper:
大写
cntrl:
控制(非可打印)字符
print:
可打印字符
使用方法:
tr[:
class:
][:
class:
]
1
eg:
tr'[:
lower:
]''[:
upper:
]'
cut按列切分文本
截取文件的第2列和第4列:
1
cut-f2,4filename
去文件除第3列的所有列:
1
cut-f3--complementfilename
-d指定定界符:
1
cat-f2-d";"filename
cut取的范围
N-第N个字段到结尾
-M第1个字段为M
N-MN到M个字段
cut取的单位
-b以字节为单位
-c以字符为单位
-f以字段为单位(使用定界符)
eg:
1
2
cut-c1-5file//打印第一到5个字符
cut-c-2file//打印前2个字符
paste按列拼接文本
将两个文本按列拼接到一起;
1
2
3
4
5
6
7
8
9
10
11
catfile1
1
2
catfile2
colin
book
pastefile1file2
1colin
2book
默认的定界符是制表符,可以用-d指明定界符
pastefile1file2-d“,”
1,colin
2,book
wc统计行和字符的工具
wc-lfile//统计行数
wc-wfile//统计单词数
wc-cfile//统计字符数
sed文本替换利器
首处替换
1
seg's/text/replace_text/'file//替换每一行的第一处匹配的text
全局替换
1
seg's/text/replace_text/g'file
默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:
1
seg-i's/text/repalce_text/g'file
移除空白行:
1
sed'/^$/d'file
变量转换
已匹配的字符串通过标记&来引用.
1
2
echothisisenexample|seg's/\w+/[&]/g'
$>[this][is][en][example]
子串匹配标记
第一个匹配的括号内容使用标记1来引用
1
sed's/hello([0-9])/1/'
双引号求值
sed通常用单引号来引用;也可使用双引号,使用双引号后,双引号会对表达式求值:
1
sed's/$var/HLLOE/'
当使用双引号时,我们可以在sed样式和替换字符串中指定变量;
1
2
3
4
5
eg:
p=patten
r=replaced
echo"lineconapatten"|sed"s/$p/$r/g"
$>lineconareplaced
其它示例
字符串插入字符:
将文本中每行内容(PEKSHA)转换为PEK/SHA
1
sed's/^.{3}/
awk数据流处理工具
awk脚本结构
awk‘BEGIN{statements}statements2END{statements}‘
工作方式
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
print打印当前行
使用不带参数的print时,会打印当前行;
1
echo-e"line1nline2"|awk'BEGIN{print"start"}{print}END{print"End"}'
print以逗号分割时,参数以空格定界;
1
2
3
echo|awk'{var1="v1";var2="V2";var3="v3";
printvar1,var2,var3;}'
$>v1V2v3
使用-拼接符的方式(”"作为拼接符);
1
2
3
echo|awk'{var1="v1";var2="V2";var3="v3";
printvar1"-"var2"-"var3;}'
$>v1-V2-v3
特殊变量:
NRNF$0$1$2
NR:
表示记录数量,在执行过程中对应当前行号;
NF:
表示字段数量,在执行过程总对应当前行的字段数;
$0:
这个变量包含执行过程中当前行的文本内容;
$1:
第一个字段的文本内容;
$2:
第二个字段的文本内容;
1
echo-e"line1f2f3nline2nline3"|awk'{printNR":
"$0"-"$1"-"$2}'
打印每一行的第二和第三个字段:
1
awk'{print$2,$3}'file
统计文件的行数:
1
awk'END{printNR}'file
累加每一行的第一个字段:
1
2
echo-e"1n2n3n4n"|awk'BEGIN{num=0;
print"begin";}{sum+=$1;}END{print"==";printsum}'
传递外部变量
1
2
3
var=1000
echo|awk'{printvara}'vara=$var
#输入来自stdin
awk'{printvara}'vara=$varfile
#输入来自文件
用样式对awk处理的行进行过滤
awk‘NRawk
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- find 文件 查找 解析