从文件名的开头删除数字

Erw*_*ann 1 find parameter rename

我希望这会奏效:

$ find . -type f -exec basename {} \; | while EFS= read -r f; do echo "${f##[0-9]}"; done 
Run Code Online (Sandbox Code Playgroud)

但是,例如,对于命名为:

1foo
11bar

它返回:

foo
1bar

什么时候


是期待。

PS:归根结底,我要mv "$f"修改名字(还要做其他修改)

编辑:

PS2:如果您考虑PS,它不是重复的。无论如何,标记为检查的答案让我满意。

Fel*_*xJN 5

如果rename(有时称为prename)是一个选项:

find . -name '[[:digit:]]*' -type f -exec rename 's:^(.*/)\d+([^/]*)\z:\1\2:s' {} +
Run Code Online (Sandbox Code Playgroud)

解释:

  • ( ) 括号内的花样被保存,可按出现次数调出
  • .*/ 必须保留目录部分
  • ([^/]*)\z: 直到主题结束的所有非/字符。
  • \1\2 重新打印捕获的目录以及输出名称中数字之后的所有内容

您可以使用-nin 选项rename先进行试运行以检查结果。