Eu tenho uma estrutura de diretórios de
- pasta1
- pasta2
- pasta2a
- pasta2b
- pasta3
- pasta3a
- pasta3b
- pasta2
Estou confuso com a saída xargs do comando abaixo:
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
eu estava esperando
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b
A saída inicial abaixo é do primeiro comando find?
.
./folder2
./folder3
Achei que a saída do primeiro comando find estava sendo canalizada como parâmetros para o segundo find e não deveria ser gerada. De onde vem a primeira parte da saída?
Responder1
find . -type d -maxdepth 1
terá .
em sua saída (o diretório atual), já que é um diretório e tem profundidade menor que 1. Então você estará executando find
novamente .
via xargs
, que é como você obtém a saída extra. Você provavelmente -mindepth 1
também deseja o primeiro comando:
$ 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