web-dev-qa-db-ja.com

このようにcommを使用するにはどうすればよいですか?

私の理解では、comm -23 file1 file2を使用したいと思います。 file1はfindの結果であり、file2はcut -c43- listです。これを1行で記述し、ファイルを使用しないことは可能ですか(リストに名前を付けたものを除く)?

1
user4069

プロセス置換はここであなたの友達です:

_$ comm -23 <(find /dir -name 'something') <(cut -c43- list)
_

形式<(command)は一時ファイル記述子をcommandに適用し、<( )全体がcomm(またはその他のコマンド)へのファイル入力として使用されます。 )。
プロセス置換の詳細はこちら を参照してください。 _man bash_も確認してください:

プロセス置換
プロセス置換により、ファイル名を使用してプロセスの入力または出力を参照できます。 <(リスト)または>(リスト)の形式を取ります。プロセスリストは非同期で実行され、その入力または出力はファイル名として表示されます。このファイル名は、展開の結果として現在のコマンドに引数として渡されます。 >(list)形式が使用されている場合、ファイルへの書き込みはリストへの入力を提供します。 <(list)形式を使用する場合は、引数として渡されたファイルを読み取って、listの出力を取得する必要があります。プロセス置換は、名前付きパイプ(FIFO)または開いているファイルに名前を付ける/ dev/fdメソッドをサポートするシステムでサポートされています。

4
George Vasiliou