stdoutを完了した後に「find」または「ls」の結果をファイルにパイプするにはどうすればよいですか?

stdoutを完了した後に「find」または「ls」の結果をファイルにパイプするにはどうすればよいですか?

だから何らかの理由で私が次のことをするとき

find $PWD -type f > listoffiles.txt

現在のディレクトリにファイルリストを作成してリストに保存するには「リストfile.txt」それはそれ自体に何らかの形で含まれています。これはパイプのSTDOUTの前にインスタンス化されていることを伝えます。一体どうすればこんなことが起こらないようにできるのか?

答え1

MoreUtilsを使用できますsponge

find . -type f | sponge listoffiles.txt

関連:

答え2

find が実行される前に出力ファイルが生成されます。たとえば、次のように他の場所で作成できます。

$ find $PWD -type f > /tmp/listoffiles.txt

またはgrep消えます:

$ find $PWD -type f | grep -v "^..listoffiles.txt" > /tmp/listoffiles.txt

またはfind無視するよう依頼してください。

$ find $PWD -type f -not -name listoffiles.txt > /tmp/listoffiles.txt

関連情報