Answers:
for file in xyz*
do
./transeq "$file" "${file}.faa" -table 11
done
这是一个简单的for
循环,它将遍历xyz
当前目录中所有以该文件开头的文件,并./transeq
以文件名作为第一个参数,文件名后跟“ .faa”作为第二个参数,然后是“ -table 11”来调用程序。
"$file".faa
作为交互式单行代码的一部分,键入起来稍微容易一些,并且安全,因为.faa
它不包含任何需要引用的shell元字符。
如果安装GNU Parallel,则可以并行执行以下操作:
parallel ./transeq {} {}.faa -table 11 ::: xyz*
如果您的程序是占用大量CPU的,它应该可以加快很多速度。
您可以在bash
命令行上执行以下操作:
printf '%s\n' {1..5025} | xargs -l -I {} -t ./transeq xyz{} xyz{}.faa -table 11
我们正在生成1到5025的整数,一个/行,然后将它们一对一地馈送到xargs,xargs将整数封装到其中{}
,然后以适当的方式将其移植到./transeq命令行中。
如果您没有大括号扩展功能,{n..m}
则可以调用该seq
实用程序以生成这些数字。
或者,您始终可以通过以下方式模拟数字生成:
yes | sed -n =\;5025q | xargs ...
for i in {1..5025}; do ./transeq "xyz$i" "xyz$i".faa -table 11; done
是更容易思考和输入的方式。如果要在执行命令之前打印命令,请使用set -x
。
for i in
{1..5025}
获得与您完全相同的结果。您也可以用for ((i=1 ; i<=5025 ; i++)); do ./transeq "xyz$i" "xyz$i".faa -table 11; done
bash 编写,但是我通常使用{a..b}
范围语法,因为它的键入速度更快。
for file in xyz*; do ./transeq "$file" "${file}.faa" -table 11; done
。我一直都在打字这种东西。而且,如果您想验证文件名等是否已按所需的方式扩展,则只需在第一次输入echo
之后就放一个do
,然后再返回您的Shell历史记录,然后第二次删除它即可。