Объяснение вывода xargs из двух команд find

Объяснение вывода xargs из двух команд find

У меня есть структура каталогов

  • папка1
    • папка2
      • папка2а
      • папка2б
    • папка3
      • папка3а
      • папка3б

Меня сбивает с толку вывод 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 передается как параметры во вторую команду 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

Связанный контент