Como criar vários ficheiros com o Terminal?

I'tenho aprendido a programar com um livro introdutório muito fixe para C e escrevo todos os exemplos e tarefas para poder aprender a sintaxe de cor. Fiz cada ficheiro manualmente até agora, mas o clique, nomear e guardar torna-se cansativo.

Preciso de uma forma de criar múltiplos ficheiros como bspl0001.c, bspl0002.c, bspl0003.c, etc. e salvá-los em directório "learning_c" ou algo assim.

I'sou um noob com o Ubuntu / Linux e, honestamente, só o execute através do VirtualBox porque o IDE Geany foi fácil de configurar. Assim, eu não'não sei realmente como funciona o Terminal.

edit I'acabo de me encontrar neste meu antigo relato e estou a abanar a cabeça sobre o porquê de querer alguma vez aprender uma sintaxe de código de cor. Curiosamente, estou quase a terminar os meus estudos de CS / Matemática BSc. Muito obrigado pela ajuda em retrospectiva!

Solução

Pode fazer isto com estes comandos:

mkdir learning_c
cd learning_c
touch bspl{0001..0003}.c

Explicação:


  • "mkdir learning_c

    • Isto irá criar uma pasta chamada learning_c na pasta actual
    • A pasta actual é normalmente a sua pasta de casa também chamada ~
    • Pode alterar o directório actual utilizando o comando cd (isto é, cd Desktop)
  • 'cd learning_c `c

    • Sim, pode adivinhar, você'reentrar na pasta recém-criada

*touch bspl{0001..0003}.c

  • touch é uma ferramenta para criar ficheiros vazios e modificar carimbos temporais; nós're-criamos ficheiros vazios.

  • touch myfile irá criar um ficheiro vazio chamado myfile.

  • O código feio que se segue (bspl{0001..0003}.c) é chamado **brace expansion***. Esta é uma grande característica da "barra" que lhe permite criar longas listas de combinações arbitrárias de cordas. Pode saber mais sobre isto na Bash Hackers Wiki. Neste caso, estará a fazer uma longa lista de parâmetros que serão passados para touch. Poderá também utilizar o seu longo equivalente:

        touch bspl0001.c bspl0002.c bspl0003.c
  • Pode alterar o número de ficheiros: se quiser 12 ficheiros, pode executar bspl{0001..0012}.c.

  • Os zeros iniciais (0012 em vez de 12) asseguram que a saída utiliza 4 dígitos de zero-padded.

Comentários (7)

Criar ficheiro correctamente numerado (seguinte) com uma combinação de teclas de atalho

Porquê criar todos os ficheiros de uma só vez? A desvantagem é que terá muitos ficheiros vazios e não utilizados. O que estou realmente a utilizar: prima uma combinação de teclas para:

  1. ter um guião ver no meu directório de códigos o que deve ser o " next" file,
  2. criar o ficheiro correctamente nomeado (incluindo o shebang) e
  3. Abrir o novo ficheiro no meu editor (no meu caso, ocioso).

Tudo num só pressionamento de teclas. Desta forma, evita-se muitos ficheiros (ainda) não utilizados; os ficheiros só são criados se precisar deles.

Uma versão simplificada abaixo (não está a decorrer o passo 3). Em cada pressionamento de teclas, criará um ficheiro correctamente numerado, como por exemplo:

bspl0001.c, bspl0002.c, bspl0003.c etc
#!/usr/bin/env python3
import os
#--- set your code directory below
dr = "/path/to/your/coding_files"
#--- set the desired (base) name extension and shebang below (leave it ""if you don't want an automatically set shebang)
name_initial = "bspl"
extension = ".c"
shebang = ""
#---

existing = os.listdir(dr)
n = 1
while True:
    file = dr+"/"+name_initial+str(n).zfill(4)+extension
    if os.path.exists(file):
        n = n+1
    else:
        with open(file, "wt") as out:
            out.write(shebang)
        break

Como usar

  1. Copiar o guião para um ficheiro vazio

  2. Na secção da cabeça, defina o caminho para o seu directório (e opcional: mudar o nome da base e/ou extensão, shebang).

  3. Guardar o guião como create_empty.py

  4. Execute o guião a partir de um atalho: Configurações &gt do sistema; Teclado > Atalhos personalizados. Adicionar o comando:

     python3 /caminho/para/criar_empty.py
Comentários (0)

Pode utilizar o seguinte código python, pode modificá-lo de acordo com as suas necessidades.
Guarde o seguinte código com o nome de ficheiro `filecreator.py'.

#!/usr/bin/env python
import os
import subprocess
work_path = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists("learning_c"):
    os.mkdir("learning_c")
os.chdir(os.path.expanduser(work_path+"/learning_c"))
n = 10 #put the number as you wish
for i in range(n):
    subprocess.call(['touch', "bsdl"+str(i).zfill(4)+".c"])

E depois executá-lo com este comando:

python filecreator.py
Comentários (0)