Copiando imagens de papel de parede em uma única pasta

1

Na minha configuração do Ubuntu 12.04, há muitas imagens de papel de parede no diretório /usr/share/wallpapers . Por exemplo, alguém pode ser

usr/share/wallpapers/Leafs_Labyrinth/contents/images/1600x1200.jpg

O que eu quero fazer é percorrer o diretório wallpapers, escolher todas as imagens de tamanho 1600x... ou 1680x... e copiá-las para outra pasta, mas renomeadas, para que a imagem acima acabe sendo chamada Leafs_Labyrinth1600x1200.jpg .

Eu não posso usar find sozinho aqui; Eu espero que eu precise usar algum tipo de shell script, do qual eu tenho pouca experiência. Existe uma maneira "natural" fácil de fazer isso?

    
por Alasdair 10.11.2013 / 12:11

1 resposta

4

Isso deve funcionar com base nos detalhes da sua pergunta. Você pode salvar o seguinte em um arquivo, alterar mydirectory para o nome da pasta de destino e executar bash name_of_script :

#!/bin/bash

# * matches any string | [08] matches 0 and 8
for image in /usr/share/wallpapers/*/contents/images/16[08]0x*.jpg; do
    # create variables by cutting $image in pieces separated by /
    name=$(awk -F/ '{print $5}' <<<$image)
    file=$(awk -F/ '{print $8}' <<<$image)

    # copy to "mydirectory"
    cp "$image" mydirectory/"$name""$file"
done

O mesmo pode ser simplificado assim:

for image in /usr/share/wallpapers/*/contents/images/16[08]0x*.jpg; do
    cp "$image" mydirectory/"$(awk -F/ '{print $5 $8}' <<<$image)"
done
    
por 10.11.2013 / 13:35