Regex 在grep中删除不包含两位数数字和模式的文件

Regex 在grep中删除不包含两位数数字和模式的文件,regex,linux,match,Regex,Linux,Match,下面的模式应该删除所有不以1开头的文件,但它匹配所有不包含1的文件 例如,它将不匹配11_xxx.sql.bz2和1_xxx.sql.bz2,但将正确匹配所有其他 我如何确保模式只匹配准确的数字,而不匹配包含该数字的任何数字 例如,我只希望下面的脚本与1_xxx.sql.bz2不匹配 使用grep-v反转匹配,以便排除与模式匹配的文件 grep -v '^1_' 使用grep-v反转匹配,以便排除与模式匹配的文件 grep -v '^1_' 我需要在开始时保留没有编号的项目 我建议使用类似这

下面的模式应该删除所有不以1开头的文件,但它匹配所有不包含1的文件

例如,它将不匹配11_xxx.sql.bz2和1_xxx.sql.bz2,但将正确匹配所有其他

我如何确保模式只匹配准确的数字,而不匹配包含该数字的任何数字

例如,我只希望下面的脚本与1_xxx.sql.bz2不匹配

使用grep-v反转匹配,以便排除与模式匹配的文件

grep -v '^1_'
使用grep-v反转匹配,以便排除与模式匹配的文件

grep -v '^1_'
我需要在开始时保留没有编号的项目

我建议使用类似这样的查找来匹配当前目录中的所有文件,不包括以1开头的文件:

如果您的查找不支持-delete,请使用:

find . -maxdepth 1 -type f -name '[0-9]*' -not -name '1_*' -exec rm {} + 
我需要在开始时保留没有编号的项目

我建议使用类似这样的查找来匹配当前目录中的所有文件,不包括以1开头的文件:

如果您的查找不支持-delete,请使用:

find . -maxdepth 1 -type f -name '[0-9]*' -not -name '1_*' -exec rm {} + 

grep匹配的是文件内容,而不是文件名。我仍然对这个问题感到困惑。是否要删除所有不以1开头的文件?如rm[^1]*?是否要删除所有不以1开头的文件?数字警告:必须避免分析ls输出。抱歉,我已更新了我正在使用的命令。是的,大卫,这是正确的,但也遵循上面给出的模式。例如,与.tar和下划线.grep匹配的是文件内容,而不是文件名。我仍然对这个问题感到困惑。是否要删除所有不以1开头的文件?如rm[^1]*?是否要删除所有不以1开头的文件?数字警告:必须避免分析ls输出。抱歉,我已更新了我正在使用的命令。是的,大卫,这是正确的,但也遵循上面给出的模式。例如,加上焦油和下划线。你好,阿努巴瓦,谢谢你。您有什么建议吗?因为有一些文件,例如:test.sql.bz2没有数字模式_test.sql.bz2,但我想保留它们?这个解决方案似乎很有帮助,但这是我唯一努力解决的问题——我需要在一开始就保留没有数字的物品:干得好,阿努巴瓦!你好,阿努巴瓦,谢谢你。您有什么建议吗?因为有一些文件,例如:test.sql.bz2没有数字模式_test.sql.bz2,但我想保留它们?这个解决方案似乎很有帮助,但这是我唯一努力解决的问题——我需要在一开始就保留没有数字的物品:干得好,阿努巴瓦!