我希望这可以工作:
$ find . -type f -exec basename {} \; | while EFS= read -r f; do echo "${f##[0-9]}"; done
但是,例如,对于名为的文件:
1foo
11bar
它返回:
foo
1bar
什么时候
富
吧
是期待。
PS:最终,我想以mv "$f"
修改后的名称(以及做其他修改)
编辑:
PS2:如果您考虑使用PS,则它不是重复的。无论如何,标为“ check”的答案使我满意。
find . -type f -exec basename {} \; | while IFS= read -r f; do echo "${f##+([0-9])}"; done
应该提供期望的结果。
这使用扩展的模式匹配运算符,这+()
意味着匹配一个或多个。
其他信息可以在bash手册页的“模式匹配”部分中找到。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句