ディレクトリ内の複数のファイルの部分ファイル名を変更します。

ディレクトリ内の複数のファイルの部分ファイル名を変更します。

かつて以下を実行するスクリプトがありました。現在のディレクトリにある複数のファイルのファイル名の一部が変更されます。

たとえば、

rename variable1 variable2

rename 456 555

入力する:

testa456testa
sama456sama
apple456applea
johna_456_johna
davida_456_davidb

出力:

testa555testa
sama555sama
apple555applea
johna_555_johna
davida_555_davidb

私はもはやスクリプトを持っておらず、Unixに初めて触れました。コマンドラインで使用できるスクリプトが必要です。

私が今やっていることは:

一時ファイル名としてリストされている「ls *(filename)」ファイルがあります。次に、%/s/456/555/g を検索します。その後、古いファイル名をすべて新しいファイル名に移動しました。 「$1を$2に名前変更する」コマンドラインからこれを行うことができます。したがって、特定のディレクトリのコマンドラインでファイル名の中央部分の名前を変更します。何百ものファイルがあるかもしれません。わかりました。 Ivanに感謝します。

ベストアンサー1

シェルを使用してパラメーター拡張を使用します。

for f in *456*; do echo mv -i -- "$f" "${f//456/555}"; done

ここでは名前に含まれるファイルをもう一度繰り返し、456パラメータ拡張モードで${f//456/555}はを456使用します555

mv上記のコマンドは、実行するコマンドを表示してテスト実行され、echoジョブが発生するように削除できます。

for f in *456*; do mv -i -- "$f" "${f//456/555}"; done

そしてrenameprename):

rename -n 's/456/555/g' *456*

これにより、ファイル名のすべての(g456部分文字列が555s/456/555/)に置き換えられます。

-nテスト実行が行われ、変更が満足のいくものである場合は、削除して-n実際の名前を変更してください。

rename 's/456/555/g' *456*

おすすめ記事