バッチ名変更操作で、ファイル名の数値を移動するにはどうすればよいですか?


13

過去数時間、ファイルの名前を変更する方法を見つけようとしてきました。

次のような2000個のファイルがあります。

file.1.pdb
file.2.pdb
file.3.pdb

これらのファイルの名前を次のように変更します。

file.pdb.1
file.pdb.2
file.pdb.3

あなたはbashを意味しませんでしたか?
-avazula

4
@avazulaいいえ、この記事をお読みください:en.wikipedia.org/wiki/Batch_renaming
アリラズミディデ

@PerlDuckはい;)
アリラズムディデ


2
投票者を閉じてください。皆さんは[batch-rename]タグに1つの質問だけが必要だと本当に考えていますか?リンクされた投稿には、使用のアイデアを除いて、この質問のタスクに実際に役立つものがありますrenameか?名前を変更するバッチの質問に特定の詳細がある場合は、特定の回答提供するだけでよいように思えます。
ザンナ

回答:


15

あなたがいる場合はrenameインストールされ、あなたが使用することができます

rename -n 's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # just watch what WOULD happen
rename    's/(\.\d+)\.pdb$/.pdb$1/' *.pdb   # actually rename the files

コマンドrenameは次の方法でインストールできます

sudo apt install rename

11

mmvそれは簡単ドロドロです(ワイルドカードパターンで複数のファイルの名前を変更):

mmv '*.*.*' '#1.#3.#2' *.pdb

またはzmvzshシェル; 名前を変更できるモジュールです。ZMV-Examplesを参照してください:

zmv -w '*.*.*' '$1.$3.$2' *.pdb

3
両方mmvzmv私にはかなりエキゾチックなようです。それらが何であり、何をするのかを少し詳しく説明しても構いませんか?
PerlDuck

2
マンページと例へのリンクを追加しました。
αғsнιη

mmvかなりクールです。この種の名前の変更にはrename、名前の一致という点で柔軟性が低いとはいえ、より適切なようです。
JAB

11

Perlの使用rename

rename -n 's/(\.\d+)(\.pdb)/$2$1/' *.pdb

簡単な説明:

  • *.pdb で終わるすべてのファイルに一致 .pdb。(シェルによって行われます)
  • (\.\d+)リテラルドットに一致してから、1つ以上の10進数に一致します。括弧は一致グループを作成します。
  • $2$1 最初と2番目の一致グループを逆にします。
  • -nアクションなし(シミュレート)。出力が適切に見える場合は、このフラグなしでコマンドを再度実行してください。

1
笑。同じ考え。48秒早くなりました。
PerlDuck

1
@PerlDuck Lol、そう、同じ考え。答えも非常によく補完します。インストールについて説明し、構文について説明します。
-wjandrea

7

次のスクリプトを使用できます。

for i in `seq 1 2000`; do
mv file.$i.pdb file.pdb.$i
done

または、次のコピーアンドペーストフレンドリーコマンド:

for i in `seq 1 2000`; do mv file.$i.pdb file.pdb.$i; done

上記のコマンドを使用するには、2000個のファイルをすべて1つのフォルダーに入れてから、そのディレクトリでターミナルを開き、その中で上記のコマンドを実行します。


5

最近、デフォルトのファイルマネージャであるnautilusがバッチ名前変更ダイアログを受け取りました。あなたが望むことをするほど強力ではありません。しかし、幸いなことに、インストール可能な代替ファイルマネージャであるthunarがあります。thunars名前変更ダイアログを使用すると、GUIを使用して目的の操作を実行できます。

最初のthunarのインストール:

sudo apt install thunar

thunarを起動し、ファイルがあるディレクトリに移動します。次に、それらをすべて選択します。を押しF2ます。

開いたダイアログで、再びすべてのファイルを選択します。モードを「検索と置換」および「名前とサフィックス」に変更します。「正規表現」を確認してください。次に、検索および置換パターンとして次を使用します。

file\.(.+)\.pdb

そして

file.pdb.$1

最後に、名前変更ボタンをクリックします。

この方法の利点は、実際に名前を変更する前に何が起こるかを視覚的にプレビューできることです。

thunar renameダイアログ


1
あなたは、ほとんどのプログラムが使用してコマンドを付けることによって、英語のメッセージを印刷することができますLC_MESSAGES=POSIX例えば、LC_MESSAGES=POSIX free。グラフィカルアプリケーションでも同じように機能しますが、デフォルト設定のNautilusのような永続アプリケーションの場合は、前のインスタンスをnautilus -q最初に終了する必要があります。
デビッドフォースター

@DavidFoerster言及してくれてありがとう、画像は置き換えられました。
セバスチャン・スターク

3

このためにrenamefrom util-linuxを使用できます(コマンドはrename.ulubuntu で呼び出されます)。

rename.ul .pdb '' *
rename.ul "file." "file.pdb." *

これにより、最初に.pdb拡張機能が端から削除され、次に中央に再挿入されます。


1
かなりクール。私は知らなかったrename.ul。構文は少し、予想外ですが、実際には宣伝どおりに機能します。プラス:(-n触れないで、伝えるだけ)スイッチもあります。
PerlDuck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.