ファイル名がめちゃくちゃになったファイルをたくさん手に入れました。すべてのファイル名の先頭は同じで、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に慣れていないので、どうやってそれを行えばいいのか、本当に何をグーグルにすればいいのか分からない。任意の助けをいただければ幸いです。
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
old
をnew
に置き換えます.*
任意の数の任意の文字\\
最初のバックスラッシュは、2番目のバックスラッシュをエスケープすることです。.*\\
は先行するすべてのバックスラッシュも食べます。//
は空なので、検索部分で一致したものはすべて削除されますこれを行うには、純粋な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’
GUIソリューションを探している場合、大量の名前変更アプリケーションがあります。 Thunarをお勧めします。これはXfceのデフォルトのファイルマネージャーです。便利な一括名前変更ツールが付属しています。ターミナルで次のコマンドを実行してThunarをインストールできます。
Sudo apt-get install thunar
おそらくUbuntuソフトウェアからもインストールできるでしょう。
G:some\really\long\file\path\then\the\
(削除したい部分)と入力し、Replace With:ボックスは空です。 New Name列に変更のプレビューが表示されます。検索と置換に加えて、このユーティリティは次のアクションをサポートしています。