mv [duplicate]を使用して複数のファイルの最初の部分の名前を変更する

mv [duplicate]を使用して複数のファイルの最初の部分の名前を変更する

ディレクトリには、次のファイルとそれ以上のファイルがあります。

  • ファイル1.txt
  • ファイル1.html
  • ファイル1.pdf
  • ...

すべてファイル1と交換する必要があります新しいファイル:

  • 新しいファイル.txt
  • newfile.html
  • 新しいファイル.pdf
  • ...

私は試した:

for f in $(ls file1*); do mv $f newfile*; done

これは置き換えますみんなファイルとファイル1ファイルとして新しいファイル*

for f in $(ls file1*); do mv $f ${f/$f/"newfile"}; done

これはまた置き換えますみんなファイルとファイル1ファイルとして新しいファイル。または

find . -name "file1.*" -exec sh -c 'mv I DONT KNOW' _ {} \;

ファイル名の一部を変数に設定して変更する方法がわかりません。

mvを使ってこれを行う最も簡単な方法は何ですか?

ベストアンサー1

Linuxで実行している場合、これを実装する最も簡単な方法は次のものを使用することですrename(パッケージの一部です)util-linux

rename 'file1' 'newfile' file1*

これはあなたが説明することを行います。 3つのパラメータが必要ですrename

  1. ファイル名で探すべきこと
  2. 代わりに何を使うべきですか?
  3. 処理するファイルマスク

クイック検索をしましたが、renameこれが最初のヒットケースでした。http://linux.icydog.net/rename.php

修正するシステムに存在しないがrename存在する場合は、bash次のようにバッチの名前変更を実行できます。これはrename上記のものと同じです。

for f in file1*; do mv -v "$f" "${f/file1/newfile}"; done

おすすめ記事