Script para pesquisar diretórios em arquivos .deb e copiá-los para outro local

0

Se eu tiver um diretório A que contenha os diretórios B, C, D, eu preciso de um script que pesquise

Diretórios B, C, D para arquivos .deb e se encontrados copiá-los para um local que eu escolher.

Este script deve reduzir o esforço de pesquisa e cópia manual.

Alguma ideia?

    
por nux 31.12.2013 / 15:55

2 respostas

4

Se você não precisa pesquisar recursivamente, então uma simples expansão de suporte bash

cp -t /location/you/choose/ /path/to/A/{B,C,D}/*.deb

deve funcionar. Se você quiser procurar em todos subdiretórios de A recursivamente, então o modo mais portátil provavelmente seria

find /path/to/A -name '*.deb' -exec cp -t /location/you/choose/ {} +

Se o seu shell for compatível, você também pode usar a opção globstar shell para tornar cp recursiva sem usar find - type shopt ou help shopt no prompt do shell para obter mais informações. Se você precisar excluir determinados subdiretórios, poderá adicionar um -prune ao comando find.

Como sempre, é necessário pensar no que você deseja fazer no caso de nomes de arquivos não exclusivos: você pode adicionar um -n ou --no-clobber ao comando cp ou usar a opção --backup=numbered . No caso de arquivos deb, isso provavelmente não importa, já que (exceto na corrupção de arquivos) qualquer nome de arquivo não-exclusivo deve corresponder a arquivos duplicados exatos.

    
por steeldriver 31.12.2013 / 16:42
3

Parece que você não tentou nada, mas de qualquer forma. Aqui está a linha, man find fará a conversa se você estiver realmente interessado.

find /path/to/A -name "*.deb" -exec mv {} /path/to/new_directory \; # Moves
find /path/to/A -name "*.deb" -exec cp {} /path/to/new_directory \; # Copies

Irá mover arquivos .deb de A (pesquisa recursiva) para novo_diretório. A propósito, isso é mais relacionado ao nix do que o específico do Ubuntu.

    
por John WH Smith 31.12.2013 / 16:28