regex - 在 OSX 和 GNU 中删除带有 "find"数字的文件名

标签 regex macos unix

我正在尝试搜索一个文件并删除名称中包含数字的相似文件

  • myfile.txt

来自

  • myfile_00_04_version.txt
  • myfile_00.txt

.

find -E . -iregex ".*myfile.*([^0-9]{1,})\.txt"

删除 myfile_00.txt,但不删除 myfile_00_04_version.txt

我尝试了 OSX find 和 GNU find,但没有成功。

最佳答案

第二个 .* 让模式匹配 myfile 和后跟 .txt 的非数字之间的任何字符。您需要将其删除,然后使用

.*myfile[^0-9/]{1,}\.txt

请注意,[^0-9/] 将匹配除数字和 / 之外的任何字符(以保留在文件名内)。

或者,确保文件名以 myfile 开头:

(.*/)?myfile[^0-9/]{1,}\.txt

其中 (.*/)? 匹配从路径开头到最后一个 / 的可选子字符串。

关于regex - 在 OSX 和 GNU 中删除带有 "find"数字的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52984483/

相关文章:

java - 将命令调用添加到 Unix 命令行应用程序

JavaScript 正则表达式,返回模式前后的所有内容

php - 将字符串分解为数组

cocoa - NSWindow问题

macos - 写入存档应用程序中的派生数据

mysql - 在 Mac OS X Lion 服务器上安装 MySQL?

windows - 如何为 MobaXterm 安装插件?

c# - 字符出现时正则表达式结束

Python - 正则表达式搜索以给定文本开头和结尾的字符串

shell - UNIX:复制整个目录结构并且只复制特定的文件类型