2つのfindコマンドからのxargs出力の説明

2つのfindコマンドからのxargs出力の説明

ディレクトリ構造は次のようになります

  • フォルダ1
    • フォルダ2
      • フォルダ2a
      • フォルダ2b
    • フォルダ3
      • フォルダ3a
      • フォルダ3b

以下のコマンドの xargs 出力に困惑しています:

XXXXXX:folder1 user$ find . -type d -maxdepth 1 | xargs -I{} find {} -type d -maxdepth 1 | xargs -I{} echo {}

.
./folder2
./folder3
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b

私は期待していました

./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b

以下の最初の出力は最初の find コマンドからのものでしょうか?

.
./folder2
./folder3

最初の find コマンドの出力は、2 番目の find にパラメーターとしてパイプされるので、出力されるべきではないと思いました。出力の最初の部分はどこから来ているのでしょうか?

答え1

find . -type d -maxdepth 1は、出力(現在のディレクトリ)にが含まれます.。これは、ディレクトリであり、深さが 1 未満であるためです。したがって、 を介してfind再度 を.実行しxargs、追加の出力を取得します。おそらく、-mindepth 1最初のコマンドでも次のようになります。

$ find . -maxdepth 1 -mindepth 1 -type d | xargs -I{} find {} -type d -maxdepth 1 | xargs -I{} echo {}
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b

関連情報