forループで「パラメータリストが長すぎます」

forループで「パラメータリストが長すぎます」

私のシェルスクリプトは次のとおりです。

#!/bin/bash

for file in *.fasta
do

signalp $file > $file.txt

done

作業フォルダには18.000個の.fastaファイルがあります。 signalpプログラムを通して各プログラムを実行したいと思います。フォルダ内のファイルが多すぎるようですが、コードを調整する方法がわかりません。助けが必要ですか?

ベストアンサー1

あなたはそれを使用することができますfind

find . -maxdepth 1 -type f -exec sh -c 'signalp "$1" >"$1".txt' _ {} \;
  • -maxdepth 1現在ディレクトリ()にあるfindファイルのみを検索します。-type f

  • sh -c 'signalp "$1" >"$1".txt'signalp見つかったすべてのファイルに対してコマンドが実行され、出力は.txt元のファイル名を追加した後に名前のファイルに保存されます。

おすすめ記事