Script Bash para editar o nome do arquivo e mover o arquivo.

0

Eu tenho algumas músicas com o nome 1 - (song author) - (song name).flac e quero alterar o nome do arquivo para apenas (song author) - (song name).flac e movê-lo para um diretório. Aqui está o que eu tenho até agora:

while IFS='' read -r line || [[ -n "$line" ]]; do
 cp $line /home/user/Desktop/Music/$(cut -c3- "$line");
done < filelist.txt

filelist.txt contém uma lista de arquivos que eu quero renomear e mover.

Não funciona, mas de certa forma eu achei interessante. Eu recebo o erro bash: /bin/cp: Argument list too long , e depois de examinar o conteúdo de line após o recorte, ele apenas parece com caracteres aleatórios / códigos de caracteres. Alguém poderia me dizer o que estou fazendo errado?

    
por btf1998 04.04.2016 / 05:36

1 resposta

0

cut usa um arquivo, ou stdin, e o switch -c é para caracteres e você provavelmente deseja campos, com separadores de espaço. Além disso, você tem que colocar o segundo argumento do cp entre aspas. E você precisa especificar -c5- para se livrar do:

while read -r line || [[ -n "$line" ]]; do
  cp $line "/home/user/Desktop/Music/$(echo "$line" | cut -d ' ' -f3-)"
done < filelist.txt
    
por 04.04.2016 / 12:46