Linuxでのファイル名からの特殊文字のバッチ削除


5

私は、いくつかのファイルに相当するダウンロードされた.pdfからすべての特殊文字を削除しようとしていますが、OS X環境ではありますが、まさに探していたソリューションに出くわしました。

MacOS Xでの保存中にファイル名から特殊文字を自動的に削除する機能

sedLinux環境に同様の方法(使用または他の機能)を実装できますか?

回答:


11

renameコマンドでこれを行うことができます。特殊文字を含む.pdfファイルのあるフォルダーにいる場合:

rename 's/[^a-zA-Z0-9]//g' *.pdf

これにより.pdf、いずれの場合もA〜Z 以外の文字または数字で終わるファイルから文字が削除されます。このリストに追加できます:

rename 's/[^a-zA-Z0-9_]//g' *.pdf

このバージョンでは、アンダースコアを使用できます。


1
追加の質問:ファイル名に英語のアルファベット以外の文字が含まれている場合、これを行う方法を知っていますか?コマンドを試すと、filenameファイルごとに「名前を変更できません:無効または不完全なマルチバイト文字またはワイド文字」が表示されます。
user2044638

@ user2044638これらのファイルの名前をaで変更できますmvか?
ポール

はい。問題なく試してみたすべてのファイルで動作しました。
user2044638

うーん、私のために働いていないようです。必要なutil-linuxパッケージをインストールしましたが、実行しているように見えますが、ファイル名に変更はありません。「名前変更」のドキュメントはどこかにありますか?
ニトリル

1
@nitrl 2つの個別の「名前変更」ユーティリティがあります。1つは正規表現をサポートし、もう1つはサポートしません。マニュアルページをチェックして、どのページがあるかを確認してください。
ポール

4

ファイル名全体と複数のファイルを処理するには:

  • /gファイル名全体を処理するために追加します。
  • 追加_してアンダースコアに置き換える(必要な場合)
  • 追加の「タイプ」のファイルまたは個々のファイル名をスペースで区切って最後に追加します。

名前の変更 's / [^ a-zA-Z0-9 _。] / _ / g' * mp4 * avi


-2

*のファイル用 do mv "$ file" $(echo "$ file" | sed -e 's / [^ A-Za-z0-9。- ] / / g'); 完了


2
これは質問に答える可能性がありますが、その理由を説明することができれば、より良い答えになります。
DavidPostill

実際には受け入れられているrename方法と同じですが、間違いなく入力するのが難しい
ゼノイド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.