Nav*_*avi 1 regular-expression wildcards
我有许多名称相似的文件,后缀为 1 到 500 的数字。我只想删除 1 到 250 的文件。有没有办法使用通配符来做到这一点。
文件是:stdout.1 到 stdout.500
我想将文件从 stdout.1 删除到 stdout.250。
谢谢
在 Zsh 中,你可以只做rm stdout.<1-250>
. <n-m>
匹配表示从n到m的十进制整数的文件名部分。(可能带有前导零,因此stdout.0099
也会匹配。)
在 Bash 中,您可以使用大括号扩展:rm stdout.{1..250}
. 尽管与 Zsh 的不同之<1-250>
处在于大括号扩展生成字符串而不考虑现有文件,因此如果列表中间缺少文件,您可能会出错。在 的情况下rm
,添加该-f
选项将消除与 一样的这些错误-f
,rm
仅当您要求取消链接的任何文件在返回后仍然存在时才会抱怨。
如果您想避免生成不存在文件的名称,或者仅限于标准sh
(即没有大括号扩展),那么您必须逐个字符地进行匹配。所以:
rm stdout.? stdout.?? # 1 to 99
rm stdout.1?? # 100 to 199
rm stdout.2[01234]? # 200 to 249
rm stdout.250 # 250
Run Code Online (Sandbox Code Playgroud)
但是请注意,如果没有匹配的文件,则rm stdout.2[01234]?
最终会删除一个名为(stdout.2[1234]?
如果存在)的文件。
归档时间: |
|
查看次数: |
359 次 |
最近记录: |