ファイル/フォルダーの名前を再帰的に変更して、その名前をWindowsフレンドリーにする方法は?


11

Ubuntuボックスには、Windowsが受け入れないファイル名にさまざまな文字が含まれるファイルが多数あります(ほとんどの場合、「:」と「*」ですが、他の文字も可能です)。

これらをすべて名前変更してWindowsマシンに移動する最も簡単な方法は何ですか?これらの文字を「[コロン]」や「[アスタリスク]」のようなものに置き換えてもかまいません。


1
Linuxでも(特に*)このような名前は避けてください。
-cYrus

4
@cYrusファイルの処理方法に依存します。スクリプトとシェルの問題だけだと思います。私はOS Xを使用していますが:、禁止されている文字はだけで、これは十分に悪いです。内容の後にドキュメントに名前を付けると便利です。また、記事名が質問で終わる場合は、ファイル名も同様です。
ダニエルベック

@cYrusと私はソフトウェアでそうしていますが、一部のソフトウェアはそうではない人々によって書かれています。たとえば、qmailは、作成するほぼすべてのファイル名で:を使用します。
RomanSt

@Daniel Beck:もちろんですが、残念ながら、そのような名前をサポートするファイルシステムを持っているだけでは、全体を台無しにするプログラムを使用できるので十分ではありません。スペースも使用しません。
-cYrus

2
@スティーブン良い質問!誰かがWindowsでファイルを受信し、そのプラットフォームでそれらを修正しなければならないことが起こるかもしれないので、Windowsはもう少し便利だと思います。
ペルティエ

回答:


4

Glindra renamedetoxを見てください

Glindraファイルユーティリティは、WindowsまたはLinuxにインストールできます。Windowsでファイル名をクリーンアップする例:

rena *.* -portable

rena *.* -safe
  • -safe
    アンダースコアへのダッシュ(ハイフン)のマップ。
    スペースを折りたたみます。
    * ?: [] "<> |(){}などの問題のある文字をアンダースコアにマップします。
  • -portable -safe
    と同じクリーンアップ操作を実行します。さらに
    、ラテン1アルファベットの上半分からすべての8ビット文字を適切な7ビットフォールバック文字にマップします。
    一重引用符「 '」をアンダースコアにマップします。

ソース:Unix / Linux / POSIXファイル名の修正:制御文字(改行など)、先頭のダッシュ、その他の問題


そのページには、404が表示されます。Googleキャッシュコピー
ダニエルベック

これは、David Wheelerによる大暴れです!特に、JungleDiskが "〜\ irina"という名前のディレクトリにcdしようとした後、キーボードをたたいた直後です。タブ補完が機能したかどうかを推測したいですか?
...-RomanSt

1
Detoxは、WindowsファイルをUnixフレンドリーにするためのものであり、その逆ではありません。
エンドリス

3
@DennisWilliamson-glindra(Windows用)は無効なファイル名を持つ文字の名前を変更できないようです。 G:\spc>rena.exe -safe -portable *.txt出力[FATAL-ERROR] Filename syntax error: aa:a.txt
スティーブン

1
Linuxに移動するときの構文の変更、つまりに注意してください。rena '*.*' -portable再帰が必要な場合は、rena '***/*.*' -portableLinuxのようなものを使用してください。そして、WindowsではなくLinuxで名前変更を行うべきだと思います。
ホロイ

4

Recuvaをお試しください。

これは、Windowsに対応していないファイル名を処理する唯一のWindowsユーティリティです。

(破損したディスクまたは再フォーマットされたディスクからの回復のために)削除されていないファイルのスキャンを有効にして、フォルダーをスキャンします。復元時に、フォルダ構造の復元を有効にします。Recuvaは、ディレクトリ全体を別の場所に効果的に「コピー」する一方で、わかりにくいファイル名を「サニタイズ」します。


1

Linuxを使用せずに、何もテストしなくても、以下のようなワンライナーを使用できると思います。

1つの文字を変更するには:

find . -type f -exec rename 's/:/\[colon\]/g' {} +
find . -type f -exec rename 's/\*/\[asterisk\]/g' {} +

そして最後に、すべての非英数字を削除するには:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} +

このニーズは、すべてのウィンドウの他の不正な文字、すなわちで拡張されることに注意しています<>:"/\|?*
holroy

0

ファイルがすでにNTFSボリューム上にある場合、Windowsからchkdiskを実行すると問題が「解決」したようです。残念ながら、問題のあるファイルを削除することでそうなるようです。


0

最初の2つの答えとpyRenamer(GUI)を組み合わせて管理しました。Linuxでは、pyRenamerを使用して、フォルダー名(ディレクトリ)のスペースを折りたたんで-スペースを何も置き換えずに-他のプログラム(Glindra rename)が再帰的に機能するようにしました(アンダースコアを配置できます)。また、ファイルから、スペースを節約するためにいくつかのウィンドウで受け入れられる文字または単語を取り出し、同様にファイル名のスペースを折りたたみました。次に、renaを実行してWindows以外の文字を取り出し、フラッシュドライブに保存し、Recuvaを使用してWindowsの下のフォルダーに「復元」しました。Recuvaは、ファイルパスが長すぎるかどうかを示します(また、Windows以外の文字も削除します)。ファイル名のパスをチェックして、Windowsの最大制限である255(または240と言って余裕がある)かどうかを確認するツールをまだ見つけていません。

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