如何找出目录中所有文件名包含非法字符的文件?

如何找出目录中所有文件名包含非法字符的文件?

以下是我所准备的内容以及遇到的问题:

find / \! -name "*[:alnum:]*" -type f -ls > ~/Desktop/files_not-allowed-char.txt

我实际上想列出包含以下字符之一的所有文件:

\ / : * ? " < > |

反过来:我想列出名称中包含以下其他字符的所有文件:

[A-Z][a-z][0-9]äöüÄÖÜß_-.()#[]
or in other "words":
[:alnum:] and "äöüÄÖÜß_-.()#[]"

我希望我能明确我的愿望。我正在进入未知的领域……

提前致谢!


背景信息:我想从 AFP 更改为 SMB,但必须确保重命名所有无效文件和文件夹名称(例如invalid_Directory_Name./)。

答案1

在“前使用 ![:专辑:]“将否定任何包含 [:alnum:] 中的字符的文件,因此它只会匹配仅包含非字母数字字符的文件名。

您可以使用不同的正则表达式来查找标点符号find . -name "*[:punct:]",但其中包括您不关心的字符。find . -name "*[\/:*?"<>|]*"应该匹配括号中至少有一个这些字符的任何内容。(尽管您可能需要转义其中几个:))

相关内容