我有一个目录,里面有一堆人物图像。不幸的是,图像所来自的系统对于一堆人物图像有其自己的唯一ID,这些图像未在企业的任何其他系统中使用(即客人有一张照片,但实际上并不在员工/客户数据库中...... .就在图片服务器的存储中)。幸运的是,8 个或更多整数后跟扩展名的图片是不需要的(我见过 .bmp 和 .jpg...但可能还有其他)。在将 ls -lh 替换为 rm -f 并编写删除其他系统照片的脚本之前,我已尝试使用以下 find 命令作为测试。我猜我误解了正则表达式,因为通常都是这种情况,但在我看来,以下内容似乎适合我正在寻找的内容。\d{8,} 似乎不起作用,因为删除它会发现一切都很好,但我不想要一切......只是那些带有 8 个或更多整数的整数,后跟任何内容。我在这里忽略了什么?
find /path/to/dir -regex '\/path\/to\/dir\/\d{8,}.*' -exec ls -lh {} \;
Run Code Online (Sandbox Code Playgroud)
谢谢。
我不知道正则find
表达式类型是否特定于系统。我在 Linux 中看到它有几种类型的正则表达式(POSIX 与 Emacs 不同)。find 中的默认正则表达式似乎与 emacs 类似。我已经看到find
还有一个-regextype
选项,因此,使用posix-extended
您可以获得与您想要的类似的东西:
find /path/to/dir -regextype posix-extended -regex '/path/to/dir/[0-9]{8,}.*' -exec ls -lh {} \;
Run Code Online (Sandbox Code Playgroud)
但你没有\d
这些类型的正则表达式(我认为它们仅来自 Perl 类型的正则表达式),并且不需要反斜杠/
。无论如何,这些作品。
归档时间: |
|
查看次数: |
2074 次 |
最近记录: |