Alterar codificação e mover arquivos em um script bash

0

Atualmente, estou passando por um processo manual de codificação de uma lista de arquivos do DOS para o Unix, para que eu possa mover os arquivos de x para y. Eu gostaria que esse processo fosse automatizado em um script, mas eu sou um noob total.

Este é o pseudo-código:

  1. Converta list.txt em codificação unix ( :set ff=unix )

  2. Mover arquivos de /folder presentes em list.txt para      /folder2 (em outras palavras, /folder contém uma lista grande, mas eu     deseja apenas que os arquivos em list.txt sejam movidos)

    é assim que eu estou movendo os arquivos: while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2 ; done < ~/list.txt

Se possível, gostaria que o script verifique list.txt primeiro. Se não houver, deverá mover TODOS os arquivos.

se list.txt então while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2 ; done < ~/list.txt

else while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2

    
por reddish 10.11.2016 / 18:37

1 resposta

2

Eu provavelmente estruturaria algo assim:

filelist="list.txt"
srcdir="/opt/home/first.last/Runs/clientPDFs"
dstdir="$HOME"

if [ -r "$filelist" ]; then
  sed 's/\r$//' "$filelist" | xargs -I{} cp -t "$dstdir"/ -- "$srcdir"/{}.pdf
else
  cp -t "$dstdir"/ -- "$srcdir"/*.pdf
fi

Você pode adicionar a extensão pdf dentro do comando sed, se preferir, por exemplo

  sed 's/\r$/.pdf/' "$filelist" | xargs -I{} cp -t "$dstdir" -- "$srcdir"/{}
    
por steeldriver 10.11.2016 / 19:12