Вам не нужен рекурсивный листинг, потому что, как вы видели, рекурсивный означает "до конца", а не "до какой-то произвольной точки остановки".
Чтобы отобразить два уровня ниже папки A, находясь в родительской папке A,
(cd folderA && ls -d -- */*)
Суть в том, что */*
подстановочный знак/подстановочный знак; который просит оболочку сгенерировать все непосредственные подкаталоги (с */
), а затем все его записи (окончательный*
).
Важно отметить, что мы должны указать ls
для не расширять какие-либо из этих конечных записей, если они являются каталогами; мы делаем это с флагом -d
.
Последняя часть, чтобы получить выходной формат, который вы ищете, я решил, запустив подоболочку, где мы cd
в папке A, чтобы сделать листинг. После выхода ls
подоболочка завершает работу, и мы возвращаемся к нашему текущему приглашению и каталогу (над папкой A ).
Буквально вчера вечером я имел дело именно с этим вопросом. Потребовалось две вещи, чтобы исправить. Поскольку политика selinux и переменные среды могут сильно различаться между тем, что имеет systemd, и тем, что есть у суперпользователя, вошедшего в систему, тестирование в командной строке может дать ложный положительный результат. При применении selinux разница может быть существенной. Вместо того, чтобы потерпеть неудачу, systemd пытается запустить его бесконечно, ожидая успешного (выхода 0 ). Итак, чтобы докопаться до сути,запустите systemctl, запустите мой демон -, затем CTL + C, чтобы отменить запуск вне службы, затем запустите systemctl status моего демона -. Статус обязательно покажет, что не работает и почему не вышел.
Другая вещь находится в разделе [service], в дополнение к другим параметрам, используйте
Type=simple
RemainAfterExit=no
Хотя Type=forking может подойти для вашей работы.