Eu queria fazer uma cópia dos arquivos de um diretório (pasta "test2") para outro diretório (pasta "Destino") enquanto usava o rsync no console Linux. O único problema? Quero copiar todos os arquivos .png e .jpg da pasta principal ("test2") enquanto excluo/ignoro todas as subpastas (neste exemplo, subpasta "abcd") que contêm arquivos .png ou .jpg, bem como .jpg ou Arquivos .png de subpastas.
Fiz um script bash que executei, mas não tive sucesso, pois copiou todos os arquivos da minha pasta de origem para a pasta de destino.
#!/bin/bash
#Define pathways to source and destination folder
source_folder="/home/Minja/Desktop/Test2/"
destination_folder="/home/Minja/Desktop/Destination/"
#Name of excluded subfolder
excluded_directory="abcd"
#Use of rsync with defined options
rsync -av --include="*/" --include="*.jpg" --include="*.png" \
--exclude="*" "$source_folder" "$destination_folder"
#Manually exclude/include files from excluded directory
rsync -av --exclude="*" --include="*.jpg" --include="*.png" \
"$source_folder/$excluded_directory/" "$destination_folder/$excluded_directory/"
Você tem alguma recomendação sobre como resolver esse problema? Como incluir também arquivos .jpg e .png de subpastas?
Parece que você deseja evitar copiar qualquer coisa dos subdiretórios e apenas copiar os arquivos PNG e JPG do nível superior. No entanto, a sua última frase parece contradizer este requisito.
Supondo que a primeira parte da sua pergunta esteja correta, desative a cópia recursiva (
-r
, implícita em-a
):Se você tiver muitos arquivos para o shell enumerar usando
*.png
e*.jpg
, reative a cópia recursiva, mas exclua todos os subdiretórios:Em ambos os casos, remova
--dry-run
quando tiver visto quersync
fará o que deseja, e ele irá em frente e realmente realizará a cópia.