【问题标题】:Find file names using find command and regex, functioning improperly使用 find 命令和正则表达式查找文件名,运行不正常
【发布时间】:2014-04-24 16:18:10
【问题描述】:

我们有一个 Samba 服务器正在备份到 S3 存储桶。发现大量文件名包含不适当的字符,AWS CLI 不允许传输这些文件。使用“最严重的违规者”,我构建了一个快速的正则表达式检查,在 rubular 中针对另一个文件名进行了测试,以尝试生成需要修复的文件列表:

([中文网页我们的团队孙é¹â€“¦]+)

我正在运行的命令是:

find . -regextype awk -regex ".*/([中文网页我们的团队孙é¹â€“¦]+)"

这会按顺序返回包含上述字符串的文件的小列表,而不是整个名称中包含的单个字符。这让我相信要么我的正则表达式不正确,要么字符列表的格式有问题。我尝试了 emacs 和 egrep 类型,因为它们看起来与我在 Unix 环境之外使用的正则表达式最相似,但没有运气。

我的测试文件名是:this-is-my€™s'-test-_ folder-name.,根据我的 rubular 测试,应该返回但不是。任何帮助将不胜感激。

【问题讨论】:

  • 如果我在我的系统上创建一个名为 this-is-my€™s 的文件,它会创建为 this-is-my??s 您也可以尝试这样的正则表达式:[^\w -]

标签: regex unix amazon-s3 find samba


【解决方案1】:

您的正则表达式 .*/([中文网页我们的团队孙é¹â€“¦]+) 需要斜杠后的特殊字符之一,而您的测试文件不以这些字符之一开头。

您可以尝试类似.*[中文网页我们的团队孙é¹â€“¦]+.* 的方法。

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 2012-05-13
    • 1970-01-01
    • 2015-08-27
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2019-06-12
    相关资源
    最近更新 更多