Tengo una estructura de directorios de
- carpeta1
- carpeta2
- carpeta2a
- carpeta2b
- carpeta3
- carpeta3a
- carpeta3b
- carpeta2
Estoy confundido por la salida xargs del siguiente comando:
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
Yo estaba esperando
./folder2
./folder2/folder2b
./folder2/folder2a
./folder3
./folder3/folder3a
./folder3/folder3b
¿El resultado inicial a continuación es el del primer comando de búsqueda?
.
./folder2
./folder3
Pensé que la salida del primer comando de búsqueda se canalizaba como parámetros a la segunda búsqueda y no debería generarse. ¿De dónde viene la primera parte del resultado?
Respuesta1
find . -type d -maxdepth 1
tendrá .
en su salida (el directorio actual), ya que es un directorio y tiene una profundidad menor que 1. Por lo tanto, volverá a ejecutar find
a .
través de xargs
, que es como obtiene la salida adicional. Probablemente -mindepth 1
también quieras para el primer 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