我有一系列名为KLLxxx
(x
代表数字)的文件。它们是文本文件,但没有文件扩展名。只是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