バッチでファイルの名前をすばやく変更する3つの方法を教えます

プログラマーであろうとプログラマー以外であろうと、私たちの仕事では、一連のファイルの名前を変更するという要件が発生します。Windowsには、この要件を満たすのに役立つ優れたソフトウェアが数多くあります。Linux環境では、コードを入力するだけでこの要件を満たすことができます。

この記事では、Liang Xuが3つの最も基本的なファイルの名前変更方法を紹介します。これは比較的基本的なため、古いドライバーはここで停止できるためです。

1.名前変更コマンド

名前が示すように、renameコマンドはファイル名を変更するために使用されます。renameコマンドには非常に強力な機能があり、これを使用してさまざまな複雑なファイル名を変更できます。ただし、この記事では、最も基本的な機能のみを紹介し、他の強力な名前変更機能の名前を変更します。名前変更の最も基本的な形式は次のとおりです。

rename 源字符串 目标字符串 文件

それらの中で、ソース文字列は元のファイル名を置き換える必要がある文字列を表します。これは元のファイル名のすべてまたは一部にすることができます。ターゲット文字列は置き換える文字列です。ファイルは、ファイル名を変更する必要があるファイルのリストであり、1つ以上にすることができます1。

ディレクトリがatb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cppドキュメントの山になり、その他の必要な形式でファイル名がmod変更されたadb場合、この要件を完了するコマンドは次のとおりです。

[alvin@VM_0_16_centos exp3]$ ls
atb_mod_01.cpp  atb_mod_02.cpp  atb_mod_03.cpp  atb_mod_04.cpp
[alvin@VM_0_16_centos exp3]$ rename mod adb *
[alvin@VM_0_16_centos exp3]$ ls
atb_adb_01.cpp  atb_adb_02.cpp  atb_adb_03.cpp  atb_adb_04.cpp

2. forループ付きのmvコマンド

大量の.txtファイルがある場合は、それらのサフィックスを変更します.cpp最初に完全なコードを見てください。

#!/bin/bash

for name in `ls *.txt`
do
    mv $name ${name%.txt}.cpp
done

Linuxではmvコマンドを使用して名前が変更されることは誰もが知っているので、バッチの名前変更では、当然、mvコマンドをループステートメントでネストすることを考えます。

ここではls *.txt、現在のディレクトリにあるすべてのtxtファイルを使用して、それらすべてを1つずつリストしてから、名前変数サイクル操作に進みます。

ループ本体では、mvコマンドを使用して名前を変更します。ここでは、${name%.txt}このアプローチ文字列を使用して.txt、部分一致が最も小さい名前から削除された尾の始まりを示し、残りの部分を返します。その後、.cppサフィックスと組み合わせます。この操作により、ファイル名のサフィックスを.txtから.cppに変更できます。最後に、mvコマンドを使用して、ファイル名を実際に変更します。

3. sed命令配合for循环方式

假如我们现在有一堆文件,文件名格式是 test01.txt,test02.txt,test03.txt,test04.txt 也就是前半部分是英文,后半部分是数字。我们现在想将文件名改成 test-01.txt 这种形式。这次,我们用sed命令来完成这个需求。

我们还是先来看看完整的代码。

#!/bin/bash

for file in `ls *.txt`
do
     newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
     mv $file $newFile
done

前面一样用 ls \*.txt 来获取所有的 .txt 文件。之后再用echo命令将其顺次输出,作为sed命令的输入。

接下来,到达关键部分了。乍一看sed的命令可能有点可怕,但老司机早已习以为常了。反引号里的内容其实是这样的基本结构:

s/ 原字符串 / 替代的字符串 /

这里我们用到了分组匹配,也就是用括号按照一定的正则表达式将原字符串进行分组,后面再用 \1,\2,\3…… 来引用前面的分组,从而在替代的字符串里拼凑成相应的格式。

前文已讲述,原文件名是由前部分英文及后部分数字所构成的,英文可以用 [a-z]+ 表示,数字可以用 [0-9]+ 表示。注意不要忘记加号,表示前面字符的若干重复。然后,我们用\1、\2分别引用前面的对应部分,再用横杆连起来,于是就成了这样:

s/([a-z]+)([0-9]+)/\1-\2/

因为在不同的Shell里,括号及加号可能会有不同的含义,所以前面要再加一个转义符,于是就成了前面所见到的样子。

再之后,同样使用mv命令完成重命名动作。

最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

免费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也希望有小伙伴能加入我,把这份电子书做得更完美!

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

おすすめ

転載: blog.csdn.net/yychuyu/article/details/108520953
おすすめ