ファイル名の疑問符(?)の名前を変更する


2

renameそれはバルクの変更ファイル名に可能です。私+はこのコマンドですべてを取り除き、アンダースコアに置き換えました:

rename 's/\+/_/g' * 

aのような通常の文字をAに変更できます。

rename 's/a/A/g' *

しかし、私は名前を変更することができませんでした?、これを好きではない/\?し、これを好きではありません/?

「?」をアドレス指定する方法はありますか ファイル名に?ほとんどのFTPプログラム?も同様にファイルの名前を変更できません。真夜中の司令官は失敗します。これまでのところ私が見つけた唯一の方法は次のとおりです:

mv ?myfile.txt myfile.txt

しかし、このコマンドは十分な柔軟性がありません。?すべてのファイルのすべてを一括で名前変更することをお勧めします。


3
?問題なくファイルを削除できますrm "?.txt"。本当にそう?ですか?たぶん、それはあなたのシェルによって次のように表示されるバイナリ文字?ですか?
mvp

3
rename使用しているツールを指定できますrename --versionか()?いくつかの異なるrename実装があります。
エイドリアン・フリューワース

これらのファイル名がどのように見えるかについて、詳細を提供できますか?たとえば、不明な文字は常にファイル名の先頭にありますか?
ForeverWintr

回答:


5

これはどう:

for filename in *
do 
    if [ "$filename" == *"?"* ] 
    then
        mv "$filename" "$(echo $filename | tr '?' '-')" 
    fi
done

または、ワンライナーとして:

for filename in *; do mv "$filename" "$(echo $filename | tr '?' '-')" ; done

ただし、ファイル名に疑問符が含まれているのでlsはなく、ファイル名に認識できない文字が含まれているという問題ではないようです。


迅速な返信をありがとう。これはbashスクリプトですか?私はそれをubuntu bashとして試しましたが、何も変更しませんでした:$(ls | grep?)のファイル名の#!/ bin / bash do mv $ filename $(echo $ filename | tr '?' '-')done
Morton

もう1つ重要なことがあります。「ls」でディレクトリをリストすると、?filenam eisで次のように表示されます:?%84nderung.pdfですが、「dir」を使用すると次のように表示されます。しかし、「?」ではなく「\ 303」を検索する必要があるかもしれません。
モートン


3

いですが、ここでは、Pythonを使用した1つのライナーを示します。

python -c 'import os, re; [os.rename(i, re.sub(r"\?", "-", i)) for i in os.listdir(".")]'

ファイル名のクリーンアップに関しては、おそらくこれが役立つでしょう:

python -c 'import os, re; [os.rename(i, unicode(i, "utf-8", "ignore")) for i in os.listdir(".")]'

0

これはやり過ぎかもしれませんが、この回答で提供されるリンクのbashスクリプトを使用すると、疑問符、改行、マルチバイト文字、スペース、ダッシュ、およびその他の使用可能な文字を含む任意の文字を含むファイル名を変更できます。

https://superuser.com/a/858671/365691

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.