驱动管家:安全、高效、精准的专业驱动下载站!

linux修改文件名你肯定不知道可以这样操作

2018-01-29 16:57:39责编:dj   来源:驱动管家     人气:

在Linux环境下修改文件名可以有不同的命令方式,比如rename、mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改文件名的方法。

对于单个的文件,可以直接使用命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?

比如某次测试后,保存的文件为 Lan1.txt,Lan2.txt,……Lan100.txt

这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个多痛苦啊。

linux修改文件名你肯定不知道可以这样操作

当前文件夹下,文件修改有四种方式:

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浏览器为什么会打不开网页?该如何处理

    IE浏览器Win7系统中一直扮演着重要角色,打开IE浏览器有时就突然打不开网页了,该怎么处理呢?下面以图文的形式为大家详细介绍下

    详情2018-01-14 13:07:44责编:dj   来源:驱动管家     
  • 两种方法可以直接跳过qq空间访问权限查看空间动态

    两种方法可以直接跳过qq空间访问权限查看空间动态

    想要查看对方动态有两种方法可以做到,前者当然是申请访问空间,但通过率感人,后者便是通过腾讯微博,可以绕过QQ空间访问权限直接查看动态,但如果事主在开通微博的时候选择隐藏QQ信息,则该教程不成立。

    详情2018-01-29 14:59:50责编:dj   来源:驱动管家     
  • psd文件打不开并且还提示无法完成请求有什么办法解决

    psd文件打不开并且还提示无法完成请求有什么办法解决

    psd文件怎么打开?psd文件打不开提示“无法完成请求”怎么办?psd是photoshop软件专用的一种图片格式,所以psd文件要用photoshop软件来打开。最近有用户双击打开psd文件时,系统提示“无法完成请求,因为它不是所指类型的文档。”,这该怎么办呢?

    详情2018-01-22 13:21:41责编:dj   来源:驱动管家     
  • 电脑在开机的时候提示press f9 to start onekey ghost是怎么回事?

    电脑在开机的时候提示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上设置开机自动连接宽带的方法介绍

    Win10怎么设置开机自动连接宽带?如果用户手上没有可以进行宽带拨号的路由器,倒是可以使用计划任务自动连接网络,且这事会在计算机每次开机的时候进行,一般非网络连接出现问题,用户就可以不用自己手工拨号了。

    详情2018-01-27 18:34:46责编:dj   来源:驱动管家     
  • 笔记本无线网络连接不上是什么原因?怎么处理

    笔记本无线网络连接不上是什么原因?怎么处理

    随着网络的不断发展,无线网络已经随处可见了。而现在的笔记本都有内置的无线网卡,只要有WiFi的热点还有知道无线密码就可以登录了。最近,有Win7系统的用户,在使用电脑上网的时候,发现无线网络连接不上。这是怎么回事?

    详情2018-01-15 09:52:28责编:dj   来源:驱动管家     
  • 磁盘碎片整理在哪:win10系统中该如何使用磁盘碎片整理功能呢?

    磁盘碎片整理在哪:win10系统中该如何使用磁盘碎片整理功能呢?

    磁盘用久了之后,就会产生很多的碎片,那么Win10磁盘碎片整理在哪?下面小编就给大家带来Win10磁盘碎片整理教程,一起来看看吧

    详情2018-01-14 09:00:29责编:dj   来源:驱动管家     
  • 应用程序正常初始化失败最简单的解决方法介绍

    应用程序正常初始化失败最简单的解决方法介绍

    很多时候我们用电脑打开程序时,会提示应用程序正常初始化(0xc0000142)失败的问题,遇到这样的问题一时也不知道怎么解决好。这对很多用户来说是个很烦的事,不知道如何解决?

    详情2018-01-02 17:04:09责编:dj   来源:驱动管家     
  • 简单的办法教你快速将gho直接转换成iso系统镜像文件

    简单的办法教你快速将gho直接转换成iso系统镜像文件

    经常备份还原操作系统的用户应该是很了解的,不过一般这类文件都是 GHO为后缀的系统镜像,镜像文件中还有一种后缀为 ISO的文件也被经常使用,这便是光盘镜像,若是需要使用ISO文件,GHO该怎么转换成ISO系统镜像文件呢?

    详情2018-01-07 15:54:36责编:dj   来源:驱动管家