Como mover um arquivo e alterar seu nome sem redigitar o nome e apenas adicionar os novos caracteres

4

Eu mudo com demasiada frequência a localização de alguns arquivos gerados diariamente. O problema é que eu quero mudar seus nomes adicionando apenas os novos caracteres necessários.

O que eu quero é algo assim:

$ mv file.csv /home/user/{something}_backup1

Então eu pude ver:

$ ls /home/user
file.csv_backup1

O que estou fazendo agora é o simples:

$ mv file.csv /home/user/file.csv_backup1

Você poderia dizer "não seja preguiçoso e faça assim", a questão é que os nomes reais dos arquivos têm cerca de 25 caracteres e redigitá-los é realmente irritante.

O passado dado é apenas um exemplo, pode ser um diretório diferente ou um novo texto diferente.

A propósito, estou usando o bash shell

    
por tachomi 03.12.2014 / 20:17

5 respostas

3

Você pode usar uma ou adicionada em seu arquivo shell rc:

mymv(){ echo mv "$1" "$2/${1##*/}_$3"; }
mymv file.csv /home/user backup1

remova o echo quando os testes forem feitos

    
por 03.12.2014 / 20:21
3

A rota mais simples, IMHO, é usar uma variável:

a=file.csv; mv "$a" ~user/"$a"_backup

Você pode aproveitar a conclusão da tabulação com variáveis, tanto ao defini-las quanto ao usá-las.

    
por 04.12.2014 / 08:51
2

Em bash , você pode tentar o seguinte:

  • Digite mv file1 .
  • Pressione Ctrl-w o suficiente para excluir file1 .
  • Pressione Ctrl-y para colar file1 de volta.
  • Digite /home/user/ .
  • Pressione Ctrl-y para colar file1 .
  • Digite o restante: _backup
por 03.12.2014 / 20:41
1

Outra solução.

Um pouco grosseiro, mas isso funcionará se todos os arquivos originais tiverem a extensão .csv e se você quiser mover todos os arquivos .csv do diretório atual.

for i in *.csv; do 
    mv $i /home/user; 
    rename .csv .csv_backup1 /home/user/*.csv; 
done

Basta alterar o "usuário" para cada usuário quando necessário.

    
por 03.12.2014 / 20:42
0

Você pode criar um script simples na pasta pessoal (ou em qualquer pasta diferente da pasta que contém os arquivos que você pretende mover). O roteiro será assim:

#!/bin/bash
for var in ./*
do
if [ -f "$var" ]
then
mv "$var" /home/user/"$var".backup1
fi
done
  • execute este script dentro da pasta a partir da qual você pretende mover arquivos, por exemplo, cd <the directory your files are in> e, em seguida, execute este script
  • esse script moverá todos os arquivos para /home/user e alterará o nome de acordo
  • se os nomes dos arquivos contiverem spaces no problem
  • também se certificará de que seus arquivos que estão sendo movidos não sejam diretório, para que você não receba nenhuma mensagem de erro ou resultado inesperado
por 04.12.2014 / 11:30