我想对文件夹中的所有文件运行一个脚本,如下所示:
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)
但这也不起作用。我不知道该怎么称呼这个问题,如果已经被问过,很抱歉!如何通过命令运行多个文件并为每个输入提供新的输出?
for f in *.fasta; do
sh script.sh "$f" > "${f%.*}_output.fasta";
done
# ${f%.*} strips a shortest match of `.*` from the end of "$f"
# (= strips .fasta)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12091 次 |
| 最近记录: |