Como copiar apenas os diretórios com um arquivo específico nesse diretório

0
Main_Directory
     |
Event_Subdirectories
     |
*.mcp .otherfiles

Eu quero copiar todos os subdiretórios Event_Sub para outro Main_Directory que tenha o arquivo * .mcp dentro do subdiretório Event_sub, mas não tenho certeza de como fazer isso. Eu uso o rsync?

    
por geeb.24 21.10.2014 / 23:44

2 respostas

2

rsync

Com o rsync, deve ser bastante fácil de fazer, embora não seja completo.

Assumindo que ./new_Main_Directory exista, caso contrário, mkdir ./new_Main_Directory

rsync -a --include '*/' --include '*.mcp' --exclude '*' Main_Directory/ new_Main_Directory/

Isso copia apenas os arquivos * .mcp e a estrutura de diretórios em que eles se encontram. Você sempre pode testar os comandos rsync com a opção --dry-run .

Fonte: link

cp

Se você quiser usar o cp, você pode tentar algo como o seguinte.

for d in ./*/; do
set -- "$d/"*.mcp
if [ -e "$1" ]; then
   # there is at least one .mcp file in $d
   cp -rp -- "$d" ./new_Main_Directory/
fi
done

Fonte: Localizar e copiar diretórios contendo tipo de arquivo

    
por 22.10.2014 / 00:10
0

O comando rsync realmente não funcionou, mas o pequeno script de loop funcionou perfeitamente. Copiou alguns outros arquivos aleatórios, mas eles foram excluídos.

    
por 24.10.2014 / 20:08

Tags