機略戦記

Maneuver warfare

変な文字を含むファイル名が無いかチェックしたい

結論

  • find .で全ファイル名を取得して正規表現で探す
$ find . -type f | awk -F / '{print $NF}' | awk '!/^[a-zA-Z0-9._-]+$/'
has_space_file_name 2.png
has_ampersand_file&name.jpg
日本語のファイル名.txt

説明

find . -type f |             # 全ファイル名を取得
awk -F / '{print $NF}' |     # ファイル名だけとりだす: /fullpath/filename.png => filename.png
awk '!/^[a-zA-Z0-9._-]+$/'   # ホワイトリストを作り、それにマッチしない行だけ出力

その他

  • .git以下のファイルは無視したいな。