ディレクトリ構造は次のようになります
- フォルダ1
- フォルダ2
- フォルダ2a
- フォルダ2b
- フォルダ3
- フォルダ3a
- フォルダ3b
- フォルダ2
以下のコマンドの 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