名前にWindowsファイルパスのように見えるファイルのグループの名前を変更する方法


9

ファイル名がめちゃくちゃになっているファイルがたくさんありました。すべてのファイル名の先頭は同じで、Windowsファイルディレクトリのように見えます。問題は、700以上のファイルがあり、実際に調べて手動ですべてのファイルの名前を変更したくないことです。これらはファイル名の例です(注:これらにはファイルディレクトリがありません)。

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

重要なポイントは、各G:some\really\long\file\path\then\the\ファイルの名前が、希望するファイル名の前にあることです。

だから私は上記のファイルを次のようにしたいでしょう:

name1.jpg
name2.png
filename.txt
file_name.mov

renameコマンドを試してみましたが、成功しませんでした。私はまだLinuxを使い始めたばかりですが、どうすればいいのか、本当に何をググググするのか本当にわかりません。任意の助けいただければ幸いです。

回答:


18

私は最後のバックスラッシュまですべてを削除しました rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

-nテスト後に削除して、実際にファイルの名前を変更します。

ノート

  • -n 何もせず、変更内容を印刷するだけ
  • s/old/new置き換えるoldnew
  • .* 任意の数の任意の文字
  • \\ 最初のバックスラッシュは2番目のバックスラッシュをエスケープすることです。
  • 正規表現は貪欲なので、この式.*\\は先行するすべてのバックスラッシュも食べます。
  • 最後の2つの区切り文字//は空なので、検索部分で一致したものはすべて削除されます

最初の行だけが必要ですか、それともすべてのファイルに対して行う必要がありますか?
kingcobra1986

最初の行@ kingcobra1986が必要なだけで、他の行は出力です。*すべてのファイルに一致しますが、これをG*-完了-に変更させます。これGにより、現在のディレクトリで始まるすべてのファイルに一致し、それらすべてを一度に処理します。それらが複数のディレクトリにある場合も、さまざまな方法で対処できます
Zanna

うまくいきました。その行で正確に何が起こるか説明できますか?
kingcobra1986 2017

1
@ kingcobra1986すみません、メモを追加しました。それが明確であるといいのですが、そうでない場合は、遠慮なく質問してください!
Zanna 2017

ハ、私.*\\ は貪欲なので、それを使用するというアイデアが好きです.*
Ziazis 2017

10

シェルパラメータ展開bashを使用して、これを純粋に実行できます。

${file##*\\}(最後の接頭辞に切り捨て)は、ファイル名の先頭から最後に表示されるまでのすべてを取り除きます\

for file in *; do
    mv -v "$file" "${file##*\\}";
done

名前変更の結果は次のとおりです。

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

6

GUIソリューションを探している場合、大量の名前変更アプリケーションが多数あります。XfceのデフォルトのファイルマネージャーであるThunarをお勧めします。便利な一括名前変更ツールが付属しています。ターミナルで次のコマンドを実行して、Thunarをインストールできます。

sudo apt-get install thunar

あなたはおそらくUbuntu Softwareからもインストールできるでしょう。

ユーティリティの使い方

  1. Thunarをインストールしたら、一括名前変更ユーティリティを起動します。
  2. +アイコンをクリックして、名前を変更するファイルを追加します。
  3. 選択したファイルのリストのすぐ下にあるドロップダウンボックスをクリックし、[ 検索と置換]を選択します。
  4. [ 検索対象]ボックスにG:some\really\long\file\path\then\the\(削除する部分)と入力し、[ 置換後の値]ボックスを空のままにします。[ 新しい名前]列に変更のプレビューが表示されます。
  5. 変更を適用するには、[ ファイル名の変更] ボタンをクリックします。

このユーティリティは、検索と置換の他に、次のアクションをサポートしています。

  • 日付/時刻を挿入
  • 挿入/上書き
  • ナンバリング
  • 文字を削除
  • 大文字小文字

ノーチラス用のものはありませんか(あると思います!)?この目的のために新しいファイルブラウザをインストールすることを提案するのは、やり過ぎです。
Zanna 2017

@Zanna v3.22には1つありますが、Ubuntuリポジトリではまだ利用できないと思います。
pomsky 2017

2
Thunarは非常に便利で、他のファイルブラウザーとうまく共存しているようです。そのため、この目的でインストールすることは価値があると思います。しかし、Thunarで一括名前変更を行う方法の説明でこの回答を拡張できますか?
Eliah Kagan 2017

1
@EliahKaganと軽量化
pomsky 2017

うまくいきました、今、私は賛成投票できます(私もXubuntuを持っているので、それをテストできます:))
Zanna
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.