我有一系列名为KLLxxx
(x
代表数字)的文件。它们是文本文件,但没有文件扩展名。只是KLL
后跟三位数字的文件。我希望它们都以文件扩展名.fastq
. 例如KLL123
-> KLL123.fastq
。
所以我尝试使用这个命令
mv KLL* KLL*.fastq
Run Code Online (Sandbox Code Playgroud)
但我不断收到错误消息:
mv: target 'KLL067.fastq' is not a directory
Run Code Online (Sandbox Code Playgroud)
我知道重命名命令功能,但我以前从未使用过 Perl,所以我不知道如何处理。我知道这是一个基本问题,但这是我第一次尝试 Linux。
我想对文件夹中的所有文件运行一个脚本,如下所示:
sh script.sh *.fasta > output
Run Code Online (Sandbox Code Playgroud)
但是我希望每个输入的输出都位于单独的文件中。因此,不是通过命令获取 5 个文件并将它们全部放入名为“output”的文件中,有没有办法让输出成为文件名,并在末尾添加后缀(如“_output”)?
所以如果我有 3 个文件,例如:
file1.fasta
file2.fasta
file3.fasta
Run Code Online (Sandbox Code Playgroud)
有没有办法可以运行这样的命令:
sh script.sh *.fasta
Run Code Online (Sandbox Code Playgroud)
并为每个输入输出这样的新文件:
file1_new.fasta
file2_new.fasta
file3_new.fasta
Run Code Online (Sandbox Code Playgroud)
我尝试了命令:
sh script.sh *.fasta > *_output.fasta
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我还尝试将所有感兴趣的文件分配给这样的变量,他认为如果我首先将它们分配给变量,也许我可以以某种方式重命名输出:
allthefiles= *.fasta
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。我不知道该怎么称呼这个问题,如果已经被问过,很抱歉!如何通过命令运行多个文件并为每个输入提供新的输出?