Я пытаюсь сделать дерево каталогов от А до Я, где следующий каталог находится в текущем каталоге.
Например: B находится внутри A, а C находится внутри B и так далее.
-A
--B
---C
----...Z
Любые подсказки о том, как сделать это автоматизированным способом?
mkdir -p
".)Ответы:
С
mkdir
,printf
и расширение скобки Bash:{A..Z}
расширяется доA B ... Z
,printf "%s/"
выводит аргументы/
после них, поэтому я получаюA/B/...Z/
mkdir -p
создаетA/B/.../Z
каталог со всеми родительскими каталогами, которые необходимо было создать.источник
-p
вmkdir
команде.На очень простом уровне вы можете использовать
{A..Z}
расширение, чтобы сгенерировать все буквы, а затем итеративно создать и ввести каждое из них:Как вы можете видеть в выводе моей подсказки, теперь у вас есть полностью сцепленный каталог.
Однако, если фактические имена каталогов отличаются от букв алфавита, вам придется каким-то образом предоставить список имен каталогов, возможно, через файл, по которому вы выполняете итерацию и снова выполняете тот же процесс. В основном это
источник
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
я не уверен, как это исправить, но я думаю, что это может быть даже неtree
проблемой, а порядком сортировки оболочки. Я бы предложил задать актуальный вопрос об этом либо здесь, либо еще лучше на unix.stackexchange.comХотя путь Муру не
printf
может быть побежден , мне лично нравятсяjot
такие вещи.jot
не устанавливается по умолчанию в Ubuntu.athena-jot
Пакет обеспечивает его. Любая из этих команд работает:Действительно любая команда, которая генерирует последовательность букв и соединяет их с косой чертой, облегчит это, потому что ее вывод может быть передан
mkdir -p
либо путем подстановки команды (как в ответе Муру ), либо с помощьюxargs
. Вот несколько примеров использования нескольких инструментов,xargs
которые не требуют установки программного обеспечения, за исключением, возможно, очень минимальных систем или Ubuntu Core:Старые выпуски Ubuntu поставляются с Python 2 вместо Python 3. Для этого просто измените
python3
на,python
чтобы последняя команда работала, если вы действительно хотите сделать это с Python.Точно так же короткий и простой способ Муру может быть записан так:
Замыкающий
/
путь в пути к каталогуmkdir -p
предлагается создать, это не проблема и, возможно, стилистически предпочтительнее. Но это прекрасно, если опустить другие примеры в этом ответе.источник