Renomeie os arquivos Bash Script - Loop Problem

0

Estou tentando escrever um script que pegue meu arquivo e renomeie pt-1 para pt2 por exemplo. testfile_pt-1_date.ts no momento em que o script irá renomear corretamente o arquivo e copiá-lo para a pasta especificada corretamente.

O problema que tenho é se existe um arquivo, por exemplo. testfile_pt_date.ts, o arquivo não está sendo renomeado, mas está sendo copiado, o que não é o que eu quero, eu quero que o arquivo seja ignorado, não sei por que o loop for for está aceitando um arquivo com pt ninguem sabe onde eu errei.

#! /bin/bash

file=$1
for file in *_pt-1_*.ts
do
echo "$1"    
a="$(echo $1 | sed s/_pt-1_/_pt2_/)"
cp "$1" "$HOME/SGTV/${a##*/}"
echo "$a"
done
    
por JohnDOw 21.08.2017 / 18:23

1 resposta

0

Em vez de um loop, sugiro que você use a ferramenta dedicada rename . É mais fácil de ler, mais rápido de escrever e evitar confusão.

rename 's/_pt-1_/_pt2_/' *_pt-1_*.ts

Aviso: rename é uma bagunça na maioria das distribuições. Se você estiver usando Debian ou um derivado, certifique-se de que o pacote rename esteja instalado (não apenas o rename binário).

    
por 21.08.2017 / 23:27