copie arquivos de vários subdiretórios para o mesmo diretório de destino

0

Eu tenho algo como um diretório como este

Main Directory
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg

Eu quero copiar todos os arquivos em todos os SubsubDirectory1 para um diretório de destino

    
por Mostafa Hussein 10.07.2018 / 10:29

2 respostas

3

Se os arquivos tiverem nomes não exclusivos,

cp "Main Directory"/*/Subsubdirectory1/* destdir

sobrescreveria alguns dos arquivos no destino. Isso também falharia se houvesse milhares de nomes de caminho correspondentes.

Para contornar isso, usando o GNU cp :

for pathname in "Main Directory"/*/Subsubdirectory1/*; do
    cp --backup=numbered "$pathname" destdir
done

Isso criaria backups numerados dos arquivos que seriam sobrescritos.

A mesma coisa, mas usando não-GNU cp :

for pathname in "Main Directory"/*/Subsubdirectory1/*; do

    # create first stab at destination pathname
    dest="destdir/${pathname##*/}"

    i=0
    while [ -e "$dest" ]; do
        # destination name exists, remove backup number from end of
        # pathname and replace with next one in the sequence
        i=$(( i + 1 ))
        dest="${dest%.~*~}.~$i~"
    done

    cp "$pathname" "$dest"
done
    
por 10.07.2018 / 11:22
1

Tente isto:

cp mainDir/*/SubsubDirectory1/* <destination_path>

Nota: os nomes dos arquivos devem ser diferentes.

    
por 10.07.2018 / 10:41

Tags