コマンド出力に空白行が表示されるのはなぜですか? :~/x/y/ | shufを探す> ~/Desktop/z.txt

コマンド出力に空白行が表示されるのはなぜですか? :~/x/y/ | shufを探す> ~/Desktop/z.txt

問題の原因は、複数行の改行を含むファイル名だったことがわかりました。 (どうやってこのようなことが起こったのかわかりません。)

find ~/x/y/ | shuf > ~/Desktop/z.txt

このコマンドは、「z.txt」ファイルの一部の空行を除いて、ほとんどが期待どおりに機能します。次の手順では、トップレベルのファイルを選択して開く必要があります。空の行は当然役に立たないため、これは不便です。なぜこれが起こるのか、そしてこの問題に対する「標準」ソリューション(いくつかのオプション?)があるのか​​、強力でシンプルなソリューション(空白行を削除するための追加コマンド?)があるのか​​疑問に思います。

ベストアンサー1

出力ファイルに空白行が表示される理由はわかりませんが、ファイルに書き込む前に空白行をフィルタリングしてみることができます。

find ~/x/y/ | shuf | grep -v '^$' > ~/Desktop/z.txt

空白行のソースを追跡するには、find個別に実行してみてください。

find ~/x/y/ > ~/Desktop/z.txt

空白行がありますかz.txt?もしそうなら、おそらくfind


改行ターミネーターの代わりにゼロターミネーターを使用できます。リストから最初の項目を選択するときは、最初の文字から最初のNULL文字までのテキストを使用してください。

find ~/x/y/ -print0 | shuf -z > ~/Desktop/z.txt

おすすめ記事