web-dev-qa-db-ja.com

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

ファイル名がめちゃくちゃになったファイルをたくさん手に入れました。すべてのファイル名の先頭は同じで、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に慣れていないので、どうやってそれを行えばいいのか、本当に何をグーグルにすればいいのか分からない。任意の助けをいただければ幸いです。

9
kingcobra1986

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/newoldnewに置き換えます
  • .*任意の数の任意の文字
  • \\最初のバックスラッシュは、2番目のバックスラッシュをエスケープすることです。
  • 正規表現は貪欲なので、この式.*\\は先行するすべてのバックスラッシュも食べます。
  • 最後の2つの区切り文字//は空なので、検索部分で一致したものはすべて削除されます
18
Zanna

これを行うには、純粋な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’
10
αғsнιη

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

Sudo apt-get install thunar

おそらくUbuntuソフトウェアからもインストールできるでしょう。

ユーティリティの使用方法

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

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

  • 日付/時刻を挿入
  • 挿入/上書き
  • 番号付け
  • キャラクターを削除
  • 大文字小文字
6
pomsky