以下是我所准备的内容以及遇到的问题:
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 "*[\/:*?"<>|]*"
应该匹配括号中至少有一个这些字符的任何内容。(尽管您可能需要转义其中几个:))