このトピックに関するいくつかの質問がありましたが、これを私の特定の問題に変換する機能がありません。私は、サブディレクトリをループし、各ディレクトリ内の圧縮されたテキストファイルで.shスクリプトを実行するforループを持っています。私はこのプロセスを並列化したいが、私はgnuを並列に適用するのに苦労している。ここでforループを並列化するためにgnuを並列化する
は私のループです:
for d in ./*/ ; do (cd "$d" && script.sh); done
私は、並列に入力するリストを必要と理解しているので、私はこれをしようとしている:
ls -d */ | parallel cd && script.sh
これが始めるように見えるが、私が手gzipがディレクトリ内のtxtファイルの1つを解凍しようとしたときにエラーが発生し、ファイルが存在しない旨を示します。
しかし、私はループのためのオリジナルを実行すると、私は終わりに世紀を取ってそれ以外の問題はありません。また、パラレルを使用するときにgzipエラーが発生するのは1回だけです。これは1000個以上のサブディレクトリがあることを考えると奇妙です。
私の質問は以下のとおりです。
がどのように私は私の場合、仕事に平行なのですか? .shスクリプトのアプリケーションを、それ自身のサブディレクトリにある1000個のファイルに並列化するにはどうすればよいですか?つまり、私の問題の解決策は何ですか?私は進歩しなければならない。
何が欠けていますか?構文、ループ、悪いスクリプト?私は学びたい。
Parallelは実際にこれらのすべての.shスクリプトを並行して実行しようとしていますか?すべての.txt.gzファイルでエラーが表示されないのはなぜですか?
アプリケーションに最適なオプションは並行ですか?私のニーズに適した別のオプションがありますか?
素敵な説明を! –