这些是我的主目录中的文件:
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 {} \;