結論
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
以下のファイルは無視したいな。