将扩展名添加到文件列表

将扩展名添加到文件列表

我正在尝试确定一种 perl 方法来将扩展名添加到文件列表中。我已经可以将具有特定扩展名的文件列表重命名为其他扩展名,但我需要能够对任何文件名执行此操作,无论它是否已经具有扩展名。

例如,我有一个文件列表,例如:

file1
file2
file3
ps.dir

我想将它们全部重命名为filename.extension

file1.bad
file2.bad
file3.bad
ps.dir.bad

答案1

在 shell 中,如果您rename安装了 Perl(有时称为prename):

rename -v 's/$/.bad/' *

如果您有太多文件,shell *glob 无法处理所有文件,您可以find像这样混合匹配(如果需要,也可以替换+为):\;

find . -maxdepth 1 -exec rename -v 's/$/.bad/' {} +

对于 Perl,只需move从标准模块中使用:

use File::Copy;
for (<*>) { move($_, "$_.bad"); }

答案2

假设文件名中没有空格:

for file in *; do mv "${file}" "${file}.bad"; done

答案3

[ ! . -sf / ] &&
mkdir ../bad  &&
pax  -rwls/$/.bad/ . ../bad

.这将创建一个硬链接镜像../bad。植根于 的每个文件.随后也可以在其中找到,../bad但名称带有附录.bad。如果新树满足,则删除当前树及其上方的树mv../bad

相关内容