Estou tentando criar uma árvore de diretórios de A a Z, onde o próximo diretório está dentro do diretório atual.
Por exemplo: B está dentro de A e C está dentro de B e assim por diante ..
-A
--B
---C
----...Z
Alguma pista sobre como fazê-lo da maneira automatizada?
command-line
directory
Nish
fonte
fonte
mkdir -p
".)Respostas:
Com
mkdir
,printf
e expansão cinta do bash:{A..Z}
expande paraA B ... Z
,printf "%s/"
imprime os argumentos com um/
depois deles, então eu receboA/B/...Z/
mkdir -p
cria oA/B/.../Z
diretório com os diretórios pai que precisavam ser criados.fonte
-p
nomkdir
comando.No nível muito simples, você pode usar a
{A..Z}
expansão para gerar toda a letra e, em seguida, criar e inserir iterativamente cada uma delas:Como você pode ver na minha saída imediata, agora você tem um diretório completamente encadeado.
No entanto, se os nomes dos diretórios reais forem diferentes do que apenas o alfabeto, você precisará fornecer, de alguma forma, a lista de nomes de diretórios, talvez por meio de um arquivo, sobre o qual você itera e executa o mesmo processo novamente. Basicamente, isso
fonte
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
, não tenho certeza de como consertar isso, mas acho que isso pode até não sertree
o problema, mas a ordem de classificação do shell. Eu sugiro que faz a pergunta real sobre isso aqui ou melhor ainda em unix.stackexchange.comEmbora o
printf
caminho do muru não possa ser batido, eu pessoalmente gostojot
desse tipo de coisa.jot
não está instalado por padrão no Ubuntu. Oathena-jot
pacote fornece. Um destes comandos funciona:Realmente qualquer comando que gere a sequência de letras e as junte a barras facilitará isso, porque sua saída pode ser passada para
mkdir -p
a substituição de comandos (como na resposta de muru ) ou usandoxargs
. Aqui estão alguns exemplos usando algumas ferramentas exargs
que não exigem a instalação de software, exceto talvez em sistemas muito mínimos ou no Ubuntu Core:As versões antigas do Ubuntu vêm com o Python 2, em vez do Python 3. Para isso, basta alterar
python3
parapython
que o último comando funcione, se você realmente quiser fazer isso com o Python.Da mesma forma, a maneira curta e simples de muru pode ser escrita como alternativa:
O rastreamento
/
, no caminho do diretório,mkdir -p
é solicitado a criar, não é um problema e, sem dúvida, é estilisticamente preferível. Mas é bom omiti-lo, como os outros exemplos nesta resposta.fonte