Backup de um diretório de programação

1

Eu tenho um diretório com muitos programas C compilados que gostaria de fazer backup. Agora eles são nomeados program.out , mas eu gostaria de mudar isso para apenas program .

Ainda seria possível excluir isso? Além disso, que tipo de regex eu usaria para renomeá-los rapidamente?

    
por user341814 10.07.2014 / 02:23

3 respostas

0

Para fazer backup do seu código, use o git ou outro software de controle de versão. Na internet você tem muitas opções para citar alguns: github, bitbucket.

No git você tem o arquivo .gitignore se você adicionar lá * .out então ele não será transferido para o repositório

    
por 10.07.2014 / 08:06
1

Não estou muito claro em sua primeira pergunta. Se você quiser renomear program.out para program , basta executar:

mv program{.out,}

Para a segunda pergunta, presumindo que eu queria obter uma lista de arquivos em /etc com um sufixo:

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

Você pode ajustar os itens acima conforme necessário.

  • \. corresponde a um período literal.
  • . corresponde a qualquer caractere após o período.
  • + diz que pelo menos um caractere deve seguir o período inicial. Portanto, isso corresponderá a test.c , mas não test. Se você quiser corresponder também test. , altere o + para um * .
por 10.07.2014 / 02:56
0

Se você estiver usando o bash como shell, essa é uma tarefa simples para um pipeline de shell.

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls produz uma lista de arquivos no diretório.

grep '\.out$' extrai os nomes dos arquivos que terminam em .out e descarta o restante.

while read file lê os nomes dos arquivos, um de cada vez.

echo mv "$file" "${file%.*}" exibe mas não executa um comando mv que renomeie cada arquivo para uma versão sem sua extensão. O ${file%.*} business é a sintaxe bash para remover uma extensão de arquivo. Quando estiver convencido de que o pipeline faria o que você queria se fosse executado de verdade, remova a parte echo e deixe-a rodar para valer.

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done
    
por 10.07.2014 / 02:50

Tags