重命名不带文件扩展名的文件

重命名不带文件扩展名的文件

我有一系列名为KLLxxxx代表数字)的文件。它们是文本文件,但没有文件扩展名。只是KLL后面跟着三位数字的文件。我希望它们全部以文件扩展名结尾.fastq。如KLL123-> KLL123.fastq

所以我尝试使用这个命令

mv KLL* KLL*.fastq

但我不断收到错误消息:

mv: target 'KLL067.fastq' is not a directory

我知道重命名命令功能,但我以前从未使用过 Perl,所以我不知道如何处理这个问题。我知道这是一个基本问题,但这是我第一次尝试 Linux。

答案1

prename...用 Perl 表达式重命名。以下命令获取文件列表 (KLL*),对于每个文件,它都会获取 KLL 的完整名称加上三个数字 ( KLL\d{3})),并将其保存到特殊的命名$1变量中。s表达式开头的the表示“替换”前两个之间的内容//与第二组之间的内容,即完整文件名$1并附加到.fastq其中。

prename 's/(KLL\d{3})/$1.fastq/' KLL*

答案2

find在您正在查看的目录中运行以下命令即可解决问题:

find . -name 'KLL[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.fastq' {} \;

这会将扩展名添加到以三位数字开头的.fastq任何文件名中。KLL

答案3

这里有很多可能的解决方案,这应该是一个:

for f in KLL*; do mv "$f" "$f.fastq"; done

相关内容