Alguém pode me dizer como criar diretórios usando expressão regular? Digamos que eu preciso criar diretórios test01, test02, test03 …. test10. Isso pode ser feito usando qualquer expressão regular?
Crio uma pasta TESTES_01 para executar o comando com regex. Comando:
mkdir -v $(printf “TESTES%02d ” {1..1})
TESTES:$ mkdir -v $(printf “TESTES_%02d ” {1..1})
mkdir: foi criado o diretório ‘TESTES_01’
Vou para ele com o comando cd.
cd TESTES_01/
Agora vou criar diretórios test01, test02, test03 …. test10. Isto pode ser feito com o comando abaixo:
mkdir -v $(printf “test%02d ” {1..10})
Resultado:
TESTES_01:$ mkdir $(printf “test%02d ” {1..10})
mkdir: foi criado o diretório ‘test01’
mkdir: foi criado o diretório ‘test02’
mkdir: foi criado o diretório ‘test03’
mkdir: foi criado o diretório ‘test04’
mkdir: foi criado o diretório ‘test05’
mkdir: foi criado o diretório ‘test06’
mkdir: foi criado o diretório ‘test07’
mkdir: foi criado o diretório ‘test08’
mkdir: foi criado o diretório ‘test09’
mkdir: foi criado o diretório ‘test10’
TESTES_01:$
mkdir -v Test{01..10}
O comando acima vem do zsh
Resultado:
TESTES_01:$ mkdir -v Test{01..10}
mkdir: foi criado o diretório ‘Test01’
mkdir: foi criado o diretório ‘Test02’
mkdir: foi criado o diretório ‘Test03’
mkdir: foi criado o diretório ‘Test04’
mkdir: foi criado o diretório ‘Test05’
mkdir: foi criado o diretório ‘Test06’
mkdir: foi criado o diretório ‘Test07’
mkdir: foi criado o diretório ‘Test08’
mkdir: foi criado o diretório ‘Test09’
mkdir: foi criado o diretório ‘Test10’
Poderia criar diretórios de A até J.
mkdir -v Test_{A..J}
Resultado:
TESTES_01:$ mkdir -v Test_{A..J}
mkdir: foi criado o diretório ‘Test_A’
mkdir: foi criado o diretório ‘Test_B’
mkdir: foi criado o diretório ‘Test_C’
mkdir: foi criado o diretório ‘Test_D’
mkdir: foi criado o diretório ‘Test_E’
mkdir: foi criado o diretório ‘Test_F’
mkdir: foi criado o diretório ‘Test_G’
mkdir: foi criado o diretório ‘Test_H’
mkdir: foi criado o diretório ‘Test_I’
mkdir: foi criado o diretório ‘Test_J’
Para remover todas estes diretórios testes vazios? Uso:
rmdir [tT]*
Se houvesse conteúdo em um dos diretórios:
rm -r [tT]*
Resultado:
TESTES_01:$ rm -r [tT]*
rm: remover diretório ‘Test_A’? y
rm: remover diretório ‘Test_B’? y
rm: remover diretório ‘Test_C’? y
rm: remover diretório ‘Test_D’? y
rm: remover diretório ‘Test_E’? y
rm: remover diretório ‘Test_F’? y
rm: remover diretório ‘Test_G’? y
rm: remover diretório ‘Test_H’? y
rm: remover diretório ‘Test_I’? y
rm: remover diretório ‘Test_J’? y
Podemos criar arquivos de texto usando o regex também.
Exemplo:
TESTES_03:$ touch texto_test_{0..11}.txt
TESTES_03:$ ls
texto_test_0.txt texto_test_1.txt texto_test_4.txt texto_test_7.txt
texto_test_10.txt texto_test_2.txt texto_test_5.txt texto_test_8.txt
texto_test_11.txt texto_test_3.txt texto_test_6.txt texto_test_9.txt
Antes de aplicar algum comando podemos usar o comando echo para testar:
echo {aa,bb,cc,dd,ee} ; echo {0..12} ; echo {a..z}
Exemplo:
$ echo {1..3} {a..c} {1..3}-{a,c}
1 2 3 a b c 1-a 1-c 2-a 2-c 3-a 3-c
E você pode aninhar, usar para instalar/desinstalar ({, des} instalar :)) pacotes. Exemplo:
aptitude install package{,-{dev,doc}}
aptitude install package package-dev package-doc
Conclusão: