Linux および macOS でファイルの名前を一括変更する

参考: Linux でファイル名を変更すると、「裸語は許可されません」という問題が発生する


Linux で名前を変更する 2 つの方法

Linux ではファイルの名前を変更するコマンドが 2 つあります: mvrename

mv注文

mvコマンドに
mv /dir/file1 /dir2/file1
は 2 つのパラメータがあり、1 つ目はソース ファイル、2 つ目は宛先です。2 つ目のパラメータのファイル名が異なる場合は、名前が変更されます。2 つのパラメータにディレクトリが含まれておらず、ファイル名のみが含まれている場合は、名前変更: これは単一ファイルの名前変更です。

rename注文

renameこのコマンド
rename arg1 arg2 arg3
renameは、実際のバッチ名前変更コマンドです。パラメータは 2 つではなく 3 つあります。
arg1: 古い文字列
arg2: 新しい文字列: 名前を変更するファイルに一致させるには、3 つのワイルドカード、
arg3を使用できます*?[char]

*任意の数の文字を示し、
?単一の文字を表し、カスタマイズされた単一の文字
[char]に一致しchar、任意の文字を入力できます。
たとえば、foo[a]*で始まるファイル名のみが一致することを意味しますfooa。ファイルが の場合foobcc.txt、一致しません。 。

たとえば、以下の 2 つのファイル/homeありますabbcc.txtaddbb.txta.txt

a に置き換えたいのですxxxが、コマンドは次のようになります。rename "a" "xxx" *.txt

次に、変更する必要があるファイルを最初に照合します。ここでは、.txtサフィックスを持つすべてのファイルが照合されます。

に変更するとrename "a" "xxx" ?.txt、1 つのファイルのみが一致します。つまり、 です。次に、a.txt一致したファイル内のa文字を に置き換えますxxx。テストするときはabab.txt、最初の文字のみが置き換えられることに注意してくださいa。これについては後で理解する必要があります。

このコマンドは Linux のバージョンによって異なり、Debian シリーズのオペレーティング システムでは使用方法も異なることに注意してください。

Debian シリーズのオペレーティング システムのrename使用

Ubuntu などの Debian シリーズのオペレーティング システムの場合、このコマンドをこのように使用するのは間違っており、次のようなエラーが報告されます。

(eval 1) 行 1 で「strict subs」が使用されている間は、ベアワード「a」は許可されません。

検索してみると、こんな記述を見つけました。

Debian ベースのディストリビューションでは、Perl 式とファイルのリストを受け取ります。使用する必要があります:
rename 's/foo/foox/' *

これはperl式ですが、わかりやすく言うと、最初の 2 つのパラメータが 1 つに結合され、上記の 3 つのパラメータ形式ではなく、2 つのパラメータだけが必要になることを意味します。

現在のファイル名がabbcc.txt,の場合ac.txtaddbb.txt

したがって、上記の名前変更例を Ubuntu で実行すると、コマンドは次のようになります。
rename 's/a/xxx/' *.txt
結果は
xxxbbcc.txt, xxxc.txt,xxxddbb.txt

これら 3 つのファイルabbcc.txtac.txtaddbb.txt
文字を削除したい場合a、コマンドはrename 's/a//' *.txt(つまり、上記のコマンドを削除するだけですxxx) となり、
結果は
bbcc.txt、 、 となりますc.txtddbb.txt

macOSの場合rename

まずbrew install renameインストールrenameコマンドを使用します。残りの使い方はUbuntuと同じです。

おすすめ

転載: blog.csdn.net/mifangdebaise/article/details/128177752