回答:
問題のある文字を含むファイル名を見つけるには、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上でうまく機能します。