OneDriveにアップロードする前のファイル名チェック

ファイルのバックアップにOneDriveも使っているんですが、
OneDriveではファイル名やフォルダ名として使っちゃいけない文字があります。
Restrictions and limitations in OneDrive and SharePoint

私の環境の場合は
" * : < > ? / \ |
と、ファイル名の最初と最後にスペースがダメ

割と一気に大量のファイルをアップロードする必要が生じまして、
事前にファイル名チェックをする方法を調べました。

■MacOSのターミナルで実行

対象のディレクトリに移動してから、以下のコマンドをそれぞれ実行
(半角コロン、半角スペースはそもそもMacOSでファイル名に使えないのでチェックしない)

<20220226追記>
MacOSの場合、システム内でコロンをファインダーで表示するときにスラッシュにしてるらしい
Mac のファイル名に使える文字列にびっくりした話
使わない方が良いと思うので、これもチェック追加

アスタリスク(*)、バックスラッシュ、クエスチョンマークはエスケープ必要

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

対象のファイルかフォルダがあったら、リストされます。

ちなみに対象ファイルが見つかった時は、
次のコマンドで使っちゃダメな文字を別な文字に置換できます。

MacOS標準では入っていないrenameを利用するので、
事前にHomebrewでrenameインストール

brew install rename

ダブルコーテーションをアンダースコアに置換

find . -name '*"*' | rename 's/"/_/'

アスタリスクをアンダースコアに置換(エスケープが必要なパターン)

find . -name '*\**' | rename 's/\*/_/'

20220226 MacOS特有の問題追記