linux修改文件名你肯定不知道可以这样操作
在Linux环境下修改文件名可以有不同的命令方式,比如rename、mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改文件名的方法。
对于单个的文件,可以直接使用命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?
比如某次测试后,保存的文件为 Lan1.txt,Lan2.txt,……Lan100.txt
这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个多痛苦啊。
当前文件夹下,文件修改有四种方式:
1、使用while Loop加${//}来实现Lan到ch7_Lan的替换。
find . -name "Lan*txt" -type f | read filesdonew=mvdone
2、充分利用awk的分隔符功能来实现:
ls *Lan* | awk 'BEGIN{FS="Lan";OFS="ch7_Lan"}{printf "mv "$0" ";$1=$1;print $0}' | sh
首先,修改FS和OFS,输入和输出的分隔符。
其次,使用awk中的命令,拼接“mv Lan1.txt ch7_Lan1.txt”这条命令。
最后,使用|sh来执行一个shell命令来完成mv动作。
其中,$1=$1是必须的,这个是完成Lan===>ch7_Lan的关键(其实是可以使用$2=$2等来替换,只要一个赋值动作而已)
奇怪的是,难道没有赋值动作,分隔符的改变就不能检测出来么?
3、使用awk的内置命令,gsub和system来实现替换和命令执行。
ls "*Lan*" | awk '{org=$0;gsub("Lan", "ch7_Lan");system("mv "org" "$1)}'
首先保存原始的数据。
其次修改 Lan为 ch_Lan
最后执行mv动作
其中,最后system命令"mv "org""需要使用""来标记。
而且org也需要"",并且不能使用$org
1、对于awk命令中的变量,不需要用$来引用。
2、在system()中,变量需要使用""来标识,否则就被当成字符串来处理。
3、如果对变量进行$来进行引用,就会出现两种情况:
3.1、正常情况下,可以被当成位置参数来引用。比如 NF表示当前行的记录个数。比如echo "a b c d" | awk '{print NF, $NF}',这个会打印两个变量,第一个是NF本身,其值为4;第二个是第四个位置参数,也就是$4,也就是d
3.2、非正常情况下:
3.2.1、如果变量本身就是个字符串。比如echo "a b c d" | awk '{va=“varA“;print va, $va}',因为后一个参数$va,由于va是个字符串,因此$va打印的就是$0
3.2.2、如果变量本身就是个数字,但是该值大于NF。 比如echo "a b c d" | awk '{va="varA";vb=6;print va, $va, vb, $vb, 1}',因为$vb相当于是$6,但是位置参数$6没有,因此打印的就是个空字符。
[martin@TSPerPacketsTest]$ echo "a b c d" | awk '{print NF, }'4 d[martin@TSPerPacketsTest]$ echo "a b c d" | awk '{va="varA";print va, }'varA a b c d[martin@TSPerPacketsTest]$ echo "a b c d" | awk '{va="varA";vb=6;print va, , vb, , 1}'varA a b c d 61
4、使用sed中的s来进行替换,然后使用e命令来执行:
[martin@TSPerPacketsTest]$ ls *Lan* | sed -r -n 's/(.*)Lan(.*)/mv & \1ch_Lan\2/e'
关于sed的选项,使用 -r和 -n
-r 来启用后续可以使用 command,比如 mv
-n 来关闭 patten space中内容的显示。
关于sed的 command,使用e。如此在使用s命令完成 pattern space中 Lan到 ch7_Lan的修改后,启动shell来执行 pattern space中的 mv指令。
如果这里使用 p,标记仅仅显示 pattern space中的指令而已。
如果对于某目录下的所有文件,进行文件名修改,有两种方式:
1、汇集awk的 FS/OFS和 gsub/system来实现。有点类似于综合上述2,3两种方式。
[martin@TSPerPacketsTest]$ find . -name "*Lan*" -type f | awk 'BEGIN{FS="/";OFS="/"}{org=$0;gsub("Lan", "ch7_Lan", );system("echo "org" "$0)}'
为了实现所有目录下的文件名进行修改,但是又不影响路径上文件夹名。
首先,标记FS和OFS都为"/"。
其次,使用gsub时候,指定仅仅修改当前行中最后一个记录,使用$NF来指定。
当然,对于FS和OFS的指定,可以不放置在 BEGIN中实现,比如:
[martin@TSPerPacketsTest]$ find . -name "*Lan*" -type f | awk -vF=/ -vOFS=/ '{org=$0;gsub("Lan", "ch7_Lan", );system("echo "org" "$0)}'[martin@TSPerPacketsTest]$ find . -name "*Lan*" -type f | awk -F/ -vOFS=/ '{org=$0;gsub("Lan", "ch7_Lan", );system("echo "org" "$0)}'
2、或者使用 sed。
[martin@TSPerPacketsTest]$ find . -name "*Lan*" -type f | sed -r -n 's/(.*)([^\/]*)Lan([^\/]*)$/mv & \1\2ch7_Lan\3/e'
其中的各个 option和 command参数,上述都已经有介绍了。
这里,针对文件夹名和文件名,使用了简单的sed内置的正则表达式来进行匹配而已,来实现仅仅对文件名的修改。
以上步骤在Linux修改文件名以及批量修改文件名的实现方式,是在shell中使用find、exec、xargs、mv命令组合批量替换文件名中的字符串。
ie浏览器为什么会打不开网页?该如何处理
IE浏览器Win7系统中一直扮演着重要角色,打开IE浏览器有时就突然打不开网页了,该怎么处理呢?下面以图文的形式为大家详细介绍下
详情2018-01-14 13:07:44责编:dj 来源:驱动管家两种方法可以直接跳过qq空间访问权限查看空间动态
想要查看对方动态有两种方法可以做到,前者当然是申请访问空间,但通过率感人,后者便是通过腾讯微博,可以绕过QQ空间访问权限直接查看动态,但如果事主在开通微博的时候选择隐藏QQ信息,则该教程不成立。
详情2018-01-29 14:59:50责编:dj 来源:驱动管家psd文件打不开并且还提示无法完成请求有什么办法解决
psd文件怎么打开?psd文件打不开提示“无法完成请求”怎么办?psd是photoshop软件专用的一种图片格式,所以psd文件要用photoshop软件来打开。最近有用户双击打开psd文件时,系统提示“无法完成请求,因为它不是所指类型的文档。”,这该怎么办呢?
详情2018-01-22 13:21:41责编:dj 来源:驱动管家电脑在开机的时候提示press f9 to start onekey ghost是怎么回事?
最近有win10系统用户反映,电脑每次开机的时候,都会显示“pressto start onekey ghost timeout:2 倒计时,该问题是由于电脑使用备份软件中设置的快捷键导致的,该怎么办呢?本文将提供Win10系统提示press f9 to start onekey ghost的原因及两种解决方法供大家了解
详情2018-01-15 17:28:11责编:dj 来源:驱动管家电脑系统为什么会自动变成静音模式?怎么解决
Win7系统的播放视频或音乐时发现电脑自动静音,也不知道什么原因,每次还要手动调节声音,这是什么情况呢?本文将提供Win7系统自动变成静音模式的原因及解决方法供大家了解,希望可以帮助到大家
详情2018-01-26 19:34:14责编:dj 来源:驱动管家在win10上设置开机自动连接宽带的方法介绍
Win10怎么设置开机自动连接宽带?如果用户手上没有可以进行宽带拨号的路由器,倒是可以使用计划任务自动连接网络,且这事会在计算机每次开机的时候进行,一般非网络连接出现问题,用户就可以不用自己手工拨号了。
详情2018-01-27 18:34:46责编:dj 来源:驱动管家笔记本无线网络连接不上是什么原因?怎么处理
随着网络的不断发展,无线网络已经随处可见了。而现在的笔记本都有内置的无线网卡,只要有WiFi的热点还有知道无线密码就可以登录了。最近,有Win7系统的用户,在使用电脑上网的时候,发现无线网络连接不上。这是怎么回事?
详情2018-01-15 09:52:28责编:dj 来源:驱动管家磁盘碎片整理在哪:win10系统中该如何使用磁盘碎片整理功能呢?
磁盘用久了之后,就会产生很多的碎片,那么Win10磁盘碎片整理在哪?下面小编就给大家带来Win10磁盘碎片整理教程,一起来看看吧
详情2018-01-14 09:00:29责编:dj 来源:驱动管家应用程序正常初始化失败最简单的解决方法介绍
很多时候我们用电脑打开程序时,会提示应用程序正常初始化(0xc0000142)失败的问题,遇到这样的问题一时也不知道怎么解决好。这对很多用户来说是个很烦的事,不知道如何解决?
详情2018-01-02 17:04:09责编:dj 来源:驱动管家简单的办法教你快速将gho直接转换成iso系统镜像文件
经常备份还原操作系统的用户应该是很了解的,不过一般这类文件都是 GHO为后缀的系统镜像,镜像文件中还有一种后缀为 ISO的文件也被经常使用,这便是光盘镜像,若是需要使用ISO文件,GHO该怎么转换成ISO系统镜像文件呢?
详情2018-01-07 15:54:36责编:dj 来源:驱动管家
- ubuntu 12.04系统关闭恢复模式的方法介绍
- 苹果手机定位追踪的步骤 苹果手机定位追踪怎么用?
- 华为p9青春版配置如何?搭载什么处理器?
- qq防盗的方法有哪些?怎样防止qq号被盗?
- word背景图片在哪儿添加?word背景图片添加的方法是什么?
- 网站的安全评估是web安全防范处理的重要环节
- fssniffer可以捕捉到局域网的pop3/ftp用户名和密码
- 互盾安卓恢复大师是什么?互盾安卓恢复大师怎么找回手机数据?
- 融360的消息推送功能在哪儿?融360怎么打开消息推送功能?
- 给你的iphone6越狱之前先来看下这些
- 戴尔d600系列笔记本有哪些特色?戴尔d600笔记本评测
- 荣耀6至尊版上不了网怎么办?怎么排除无法上网的原因?
- 三星手机如何截屏?以三星s6为例教你两种截屏方法
- 搜狗输入法状态栏消失是什么原因?搜狗输入法不见了怎么解决?
- MAC系统的快捷键使用技巧是什么?MAC系统按键功能介绍
- 云计算平台paas应用 怎么应对paas安全性挑战?
- 默认安装的sniffer软件:snoop攻击实例
- 百度手机助手怎么卸载应用?百度手机助手卸载应用的方法
- 射手影音可以自动下载电影字幕?射手影音怎么用?
- 射手影音怎么设计皮肤?射手影音皮肤设计方法