練習として、私のホームディレクトリからすべての.cファイルを見つけ、各ファイルの行を数え、ソートされた出力をfind、wc、cut ad sortを使ってsorted_statistics.txtに格納する必要があります。 は、私は、このコマンドは"... out | sort -n -o out"は実際にソートを実行しないのはなぜですか?
find /home/user/ -type f -name "*.c" 2> /dev/null -exec wc -l {} \; | cut -f 1 -d " " | sort -n -o sorted_statistics.txt
を動作するように見つかりましたが、
find /home/user/ -type f -name "*.c" 2> /dev/null -exec wc -l {} \; | cut -f 1 -d " " >> sorted_statistics.txt | sort -n sorted_statistics.txt
がちょうどソートコマンドの前に停止した理由を私は理解できません。 ちょうど好奇心から、それはなぜですか?
「直前に止まる」ことはありません。パイプラインのすべての部分が同時に実行されます。最後の部分は、最初の部分と同時に実行されます。 (前のコンポーネントの出力をリダイレクトして、実際には後のコンポーネントに何も供給しない場合、後のパイプラインコンポーネントはほとんど行いません)。 –
...それは、同じ出力ファイルへのパイプライン書き込みの2つの異なる部分を持つことはあまり意味がないと言いました。あなたが何をもっと詳細に記述するのに役立つかもしれません(そしておそらく、追加動作が望まれるかどうかを宣言します - 複数の統計セットを同じ出力ファイルにマージしようとしていますか? 'foo.c'の古いバージョンと*新しい*からの数字ですか? –
私はそれを持っていると思います。私は一般的にパイピングするのが初めてで、シーケンシャルな実行と考えていたので、2番目のバージョンが正常に機能していると思ったのです。あなたの説明をありがとう! – FilBr