bashプロセス置換


844 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2012/09/16(日) 09:58:27.49
巨大なディレクトリツリーの差分(ファイルの有無だけでいい)を取りたいんですが、
rsync以外で効率のいいやり方を教えて下さい。
diff -rqやfind | sort | diffでは遅すぎるのでもっといいやり方は無いでしょうか。
845 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2012/09/16(日) 10:10:52.16
>>844
diff <(ls -aR /dir1) <(ls -aR /dir2)


プロセス置換

プロセス置換 (process substitution) がサポートされるのは、 名前付きパイプ (FIFO) または ファイル・ディスクリプターの /dev/fd 形式での指定 をサポートしているシステムです。これは <(list) または >(list) の形になります。 プロセス list は、その入力や出力が FIFO または /dev/fd 中の 何らかのファイルに接続された状態で実行されます。 このファイルの名前は、展開の結果として、 引き数の形で現在のコマンドに渡されます。 >(list) の形式を使った場合、 ファイルへの書き込みは list への入力となります。 <(list) の形式を使った場合、 引き数として渡されたファイルは list の出力を得るために読み込まれます。