GNU/Linux >> Linux の 問題 >  >> Linux

Unixで単一のコマンドまたはスクリプトで複数のファイルの名前を変更する方法は?

ほとんどの標準シェルは、シェル変数内で単純なテキスト置換を行う方法を提供します。 http://tldp.org/LDP/abs/html/parameter-substitution.html は次のように説明しています:

${var/Pattern/Replacement}

First match of Pattern, within var replaced with Replacement.

したがって、このスクリプトを使用して、適切なすべてのファイルをループし、それぞれの名前を変更します:

for file in aro_tty-mIF-*_opt
do
    mv -i "${file}" "${file/-mIF-/-mImpFRA-}"
done

-i オプションを追加したので、各名前変更操作を確認できます。いつものように、大量の名前変更や削除を行う前に、すべてのファイルのバックアップを作成する必要があります。


Perl の rename がない場合 :

perl -e '
FILE:for $file (@ARGV){
        ($new_name = $file) =~ s/-mIF-/-mImpFRA-/
        next FILE if -e $new_name;
        rename $file => $new_name
}' *_opt

する場合 Perl の rename を持っている :

rename 's/-mIF-/-mImpFRA-/' *_opt

次のような複雑なコマンドを試す前に、ファイルをバックアップしてください .タイプミス (私のものかあなたのものか) がどのような原因になるかはわかりません。

mv で (コメントで尋ねたように --- rename 他の回答で示唆されているように、特にファイル名にスペースや奇妙な文字を含めることができる場合は、おそらくより安全です)スタイルの何か

for f in *_opt; do
    a="$(echo $f | sed s/-mIF-/-mImpFRA-/)"
    mv "$f" "$a"
done

Linux
  1. Linuxでファイルの名前を変更する方法

  2. 複数のリモートシステムで単一のコマンドを一度に実行する方法

  3. Linuxコマンドのスクリプトを作成する方法

  1. Unixの単一のコマンドまたはスクリプトで複数のファイルの名前を変更する方法は??

  2. Linuxで一度に複数のファイルの名前を変更する方法

  3. UNIX シェル スクリプトからファイルを ftp およびダウンロードする方法

  1. Linuxコマンドラインで複数のファイルの文字列を置き換える方法

  2. Linux / Unixで複数のファイルの名前をある拡張子から別の拡張子に変更する方法は?

  3. Linux Bash スクリプト、コマンドは 1 つ、行は複数?