以下是我准备的内容以及我遇到的问题:
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./
)。
使用 !在“ [:alnum:] ”前面将否定任何在 [:alnum:] 中有字符的文件,因此它只会匹配只有非字母数字字符的文件名。
您可以使用不同的正则表达式来查找标点符号
find . -name "*[:punct:]"
,但其中包括您不关心的字符。find . -name "*[\/:*?"<>|]*"
应该与括号中至少一个字符匹配。(尽管您可能需要逃避其中的一些:))