フォルダーとサブフォルダー内のすべての違法なWindows文字を見つける


1

不正なWindows文字が含まれるすべてのファイルを検出<>:/\\|?*し、これらの文字をアンダースコアに置き換えるAutomatorスクリプトが必要です。ファイル名の残りの部分は変更しないでください。

別の方法として、端末スクリプトを使用します。でそれらを見つける方法find . -name "*[<>:/\\|?*]*"は知っていますが、名前を適切に変更する方法はわかりません。

どうすればいいですか?


1
次のことに注意してください。-OS Xには、その文字のファイルはおそらくないでしょう。同様に-*を使用してbashでスクリプトを作成すると、パワー/危険が伴います。完全にバックアップされたマシンで開発を行います。
bmike

違法なファイル名はどうですか?正しく覚えていれば、Windowsで「con」という名前のファイルを作成することはできません
-WayToDoor

回答:


1

名前に無効な文字が含まれる各ファイルとフォルダーを検出し、ファイル/フォルダーの名前を変更して、各無効な文字をダッシュ​​に変更するbashのワンライナーを見つけました:

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv -n "$x" "$y" ' \;

ファイルに不正な名前があり、別の不正な名前のファイルとまったく同じ正当な名前に修正される可能性があります(例:「fle」という名前の2つのファイル)。上記の1ライナーは、最初のファイルと同じ名前に修正される2番目の(またはそれ以上の)不正に名前が付けられたファイルの名前を変更しません。これは、ワンライナーの実行後も、いくつかの違法な名前のファイルが残っている可能性があることを意味します。このワンライナーを実行した後、実行します

find . -name "*[<>:\\|?*]*"

再び存在する違法な名前のファイルを特定します。この状況に対処する1つの方法は、sed置換のダッシュを別の文字(アンダースコアなど)に変更し、ワンライナーを再度実行することです。

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