У меня есть структура каталогов
- папка1
- папка2
- папка2а
- папка2б
- папка3
- папка3а
- папка3б
- папка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 передается как параметры во вторую команду 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