Faça backup de um diretório de programação

Faça backup de um diretório de programação

Eu tenho um diretório com muitos programas C compilados dos quais gostaria de fazer backup. No momento eles estão nomeados, program.outmas eu gostaria de mudar isso para apenas program.

Ainda seria possível excluí-los? Além disso, que tipo de regex eu usaria para renomear todos eles rapidamente?

Responder1

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

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

Responder2

Não fui muito claro na sua primeira pergunta. Se você quiser renomear program.outpara program, basta executar:

mv program{.out,}

Para a segunda pergunta, supondo que eu queira obter uma lista de arquivos /etccom um sufixo:

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

Você pode ajustar o acima conforme necessário.

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

Responder3

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

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

lsproduz uma lista de arquivos no diretório.

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

while read filelê os nomes dos arquivos um de cada vez.

echo mv "$file" "${file%.*}"exibe, mas não executa, um comando mv que renomearia cada arquivo para uma versão sem sua extensão. O ${file%.*}negócio é a sintaxe bash para remover uma extensão de arquivo. Quando estiver satisfeito com o fato de que o pipeline faria o que você queria se fosse executado de verdade, remova a echopeça e deixe-a funcionar de verdade.

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

informação relacionada