当前位置: 首页 > Linux

linux递归修改后缀名

时间:2023-04-06 20:55:01 Linux

1需要使用修改命令:findawkxargs递归修改命令如下:find。-名称'*.XXX'|awk-F“。”'{打印$2}'|xargs-i-tmv./{}.XXX./{}.XXXX将XXX的后缀改为XXXX。2findfind用于在指定目录下查找文件,将参数前的字符串视为要查找的目录。在寻找。-name'*.XXX':.:表示当前文件夹-name:表示文件名与name匹配的文件,有类似的-iname忽略大小写*.XXX:表示查找所有XXX后缀的文件其他常用示例:查找。-typef:递归列出一般文件find.-ctime-20:递归列出最近20天内更新的文件find/var/log-typef-mtime+7-okrm{}\;:查找/var/log下更新时间在7天之前的普通文件,删除前询问find。-typef-perm644-execls-l{}\;:在当前目录下查找权限为644的文件find/-typef-size0-execls-l{}\;:在普通文件下查找/带文件大小为0并列出完整路径3awkawk是一种处理文本文件的语言,是一种强大的分析工具。awk-F“。”'{print$2}':-F:指定输入文件分割分隔符,因为需要修改后缀名,后缀名和主文件名用.隔开,所以加上“.”参数'{??print$2}':print表示打印,$表示awk中的字段引用,其中$2表示引用第二个字段,字段按照前面的-F参数进行分隔。因为find打印的是./a/b/c.XXX,所以print$2会打印第二个字段,也就是路径/a/b/c,而print$1是空的(因为在第一个之前没有其他.内容),print$3是后缀名4xargsxargs是给命令传递参数的过滤器,可以将管道或者标准输入数据转换成命令行参数,默认命令是echo。使用xargs为不支持管道的命令添加类似管道的功能,例如:find。-名称'*.jpg'|ls-l#错误,但是可以执行,执行结果只是ls-lfind的结果。-名称'*.jpg'|xargsls-l#对xargs-i-tmv./{}.XXX./{}.XXXX:-i:表示给xargs的每一项赋值,一般是逐行给下面的{}-t:可选,表示先打印要执行的命令(这里是先打印mv)再执行mv:rename{}:与-i一起使用,其中{}表示上一步awk中的路径名,执行一次mv对每条路径,即修改后缀名