copiando e renomeando vários arquivos para uma pasta oculta em um comando de linha única

1

Então, estou tentando copiar e renomear todos os arquivos .png para o diretório de ícones como;

$ cp /opt/pt/art/{pka.png,pkt.png,pkz.png} ~/.local/icons/{application-x-pka.png,application-x-pkt.png,application-x-pkz.png}

mas recebo o seguinte erro de saída:

cp: target '/home/carl/.local/share/icons/application-x-pkz.png/..' is not a directory

Como posso fazer isso?

    
por githinjikiragu 09.07.2018 / 09:27

2 respostas

1

O comando

cp não aceita vários destinos.

$ for a in pka pkt pkz; do
    cp /opt/pt/art/${a}.png ~/.local/icons/application-x-${a}.png
done
    
por 09.07.2018 / 09:30
-1

Para localizar todos os arquivos no diretório inicial com png, extensões e copiá-los para ~/backup (as pastas apenas exemplos), tente:

cd
find . -regex '.*\(png\)' \! -path './backup/*' -exec echo cp -t backup {} +

E para renomear

a=1
for i in *.png; do
  new=$(printf "%04d.png" "$a") #04 pad to length of 4
  mv -i -- "$i" "$new"
  let a=a+1
done
    
por 09.07.2018 / 09:57