gdo*_*ica 68 unix bash regex rm
我试图删除以 A 开头并以 2 个数字结尾的文件,但它没有做任何事情。
我试过的:
rm ^A*[0..9]2$
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
Den*_*nis 80
您可以使用以下命令删除符合您条件的所有文件:
ls | grep -P "^A.*[0-9]{2}$" | xargs -d"\n" rm
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
ls
列出所有文件(一行一行,因为结果是通过管道传输的)。
grep -P "^A.*[0-9]{2}$"
过滤文件列表,只留下那些匹配正则表达式的文件 ^A.*[0-9]{2}$
.*
表示任意次数的.
,其中.
是匹配任何字符的通配符。
[0-9]{2}
表示恰好两次出现[0-9]
,即任何数字。
xargs -d"\n" rm
rm line
对line
通过管道传输到它的每个执行一次。
我哪里错了?
首先,rm
不接受正则表达式作为参数。除了通配符之外*
,其他所有字符都按字面处理。
此外,您的正则表达式略有偏差。例如,*
是指任何出现...
在正则表达式,所以A*
比赛A
,AA
等等,甚至一个空字符串。
有关更多信息,请访问正则表达式.info。
cYr*_*rus 68
或使用find
:
find your-directory/ -name 'A*[0-9][0-9]' -delete
Run Code Online (Sandbox Code Playgroud)
此解决方案将处理奇怪的文件名。
归档时间: |
|
查看次数: |
122657 次 |
最近记录: |