用于从文件夹中的所有文件中删除文件名中的字符的脚本

时间:2015-11-05 00:01:12

标签: regex bash

所以基本上,我想编写一个脚本,能够从文件名中删除字符,直到它出现一个字母。防爆。如果我要在包含文件的文件夹中运行它:

13. abc
0 2 d ef
1.ghi3

它会将文件重命名为

abc
d ef
ghi3

由于

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

for f in *; do
  echo mv "$f" "$(sed 's/^[^[:alpha:]]*//' <<<"$f")"
done

为安全起见,mv命令的前缀为echo;删除echo以执行实际重命名。

以上是 POSIX兼容实施。

请注意 rename不是POSIX实用程序,因此您可以:

  • 既不依赖于它的存在,
  • 也不依赖于它在不同平台上的工作方式。

关于rename热门平台概述

  • 基于Debian的平台,例如 Ubuntu ,有 基于Perl rename实用程序:
    • 它期望Perl语句,最值得注意的是s///基于正则表达式执行替换。
    • 使用-n
    • 进行干运行支持
  • Fedora 有一个完全不同的实用程序来自util-linux
    • 仅支持替换文字子字符串。
    • 没有干运行支持。
  • OS X 根本没有 NO rename实用程序
    • 通过Homebrew,您可以安装基于Perl的(brew install rename),其功能是基于Debian的平台上基于Perl的实现的超集。

答案 1 :(得分:1)

您可以使用重命名命令。

rename 's/^[^a-z]+//' *