删除名称与特定模式匹配的所有文件

删除名称与特定模式匹配的所有文件

这些是我的主目录中的文件:

23233.txt
3233.txt
ba233.txt
kh23.txt
khalith
main.sh
s2233.txt
tr233.txt
WWW.txt

如何删除名称以两个小写字母开头,后跟两个数字和扩展名的所有文件.txt,例如kh23.txt

答案1

您可能正在寻找的模式是

[a-z][a-z][0-9][0-9].txt

这将匹配当前目录中仅包含两个小写字符、后跟两个数字、后跟文字字符串 的任何名称.txt

与正则表达式不同,文件名通配模式会自动锚定到字符串的开头和结尾,因此我们不必对文件名在两个小写字符中的第一个字符之前或.txt.

您可以直接使用此模式rm

$ rm "$HOME"/[a-z][a-z][0-9][0-9].txt

或者,如果您想递归到所有子目录,请使用find

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -delete

如果您的实现find不支持-delete,请考虑以下事项:

$ find "$HOME" -name "[a-z][a-z][0-9][0-9].txt" -exec rm {} +

PS:用这个词数字当你指的是零到九之间的数字时。 A数字有点模糊,特别是因为 233(几个示例文件名的一部分)是一个数字。(此后我编辑了问题以消除这种歧义)

答案2

那这个呢?

find /path/to/parent/dir/ -regextype posix-extended -regex '.*/[a-z]{2}[0-9]{2}\.txt' -exec rm {} \; 

相关内容