编辑

编辑

我的 unix 目录中有大约 5000 个 .xml 文件。我想将扩展名 Hist 添加到 .xml 扩展名之前的所有文件名中。例如,如果文件是 ABCD.xml,我想将其重命名为 ABCDHist.xml。我想对目录中的所有 5000 个文件执行此操作。有没有一行命令可以做到这一点?

编辑

我正在 unix (aix) 机器上执行此操作,我使用的工具是 Attachmate 反射 ssh 客户端。看起来 perl 命令在那里不能执行。

答案1

使用perl的重命名:

rename -n 's/\.xml$/Hist.xml/' *.xml

(当测试正常时删除 -n 开关)

警告还有其他同名的工具可能能够也可能无法做到这一点,所以要小心。

如果运行以下命令 ( GNU)

$ file "$(readlink -f "$(type -p rename)")"

你有一个像这样的结果

.../rename: Perl script, ASCII text executable

并且不包含:

ELF

那么这似乎是正确的工具 =)

如果不是,则将其设为默认值(通常已经是这种情况)Debian并衍生如下Ubuntu

$ sudo update-alternatives --set rename /path/to/rename

(替换为您的命令/path/to/rename的路径。perl's rename


如果您没有此命令,请搜索包管理器来安装它或手动做


最后但并非最不重要的一点是,这个工具最初是由 Perl 之父 Larry Wall 编写的。

相关内容