Windows上で不正なファイル名を持つMac上のすべてのファイルを見つける方法


1

私は、Mac上のすべてのファイルをチェックし、制限された/禁止された文字を報告することができるスクリプトまたはソフトウェアを探しています\ /:*? "<> |、これはWindowsでは動作しません。

何か案は?


ファイル名の制限された文字やファイルの内容について話していますか?
Pascal

\ /:*? "<> |ファイル名に含まれています。ファイルの内容に使用禁止の文字はありますか?!!!実際にはわかりません。
Feri

回答:


2

問題のある文字を含むファイル名を見つけるには、findを使用できます。

$ find / -regex ".*[<>/:*?|].*" -print

検索したいすべての文字を角括弧で囲みます。一部の文字は特別な意味を持つため、エスケープする必要があることに注意してください(たとえば、0〜9は0、 - 、9ではなくすべての数字を検索します)。基本的に、二重引用符で指定するのは、ファイル名を印刷するために適合する必要がある正規表現です。

すべてのファイルのリストを含むファイルを作成することができます。

$ find / -regex ".*[<>/:*?|].*" -print > problematic-files.txt

使うなら -name の代わりに -regexその後、基本的なシェルパターンを指定できます(*は任意の数の文字、?は1つの文字、[...]は任意の文字を表します)。これはあまり柔軟ではありませんが、おそらくあなたの目的には十分です。

$ find / -name "*[<>/:*?|]*" -print > problematic-files.txt

(私が使っているものと同じfind機能がGNU findと同じかどうかわからない。マニュアルを入手してそれを使った正規表現やシェルパターンの使い方を理解するには "man find"を使う。)


に注意してください / のようにパスにマッチします /some/path/goodname.txt...それ以外の場合、これはMac上でうまく機能します。
Arjan

うーん、それは本当です。そのため、正規表現で/を省略します。ファイル名のスラッシュを除外する必要がある場合は、スクリプト化されたループを使用してコンピュータ上のすべてのファイルのリストを実行し、それぞれにsedを使用することを含まない解決策はありません。スラッシュを含むファイルが多すぎないことを願います。私のシステムでは、名前にスラッシュを含むファイルを実際に作成するのに問題があります。
Pascal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.