Se eu pedisse a você para mencionar um comando para copiar uma pasta para outro local, quase todo mundo mencionaria cp.
Agora, se eu disser que, além disso, você deve copiar todo o conteúdo dessa pasta exceto 1 arquivo, muitos estariam pensando e outros mencionariam rsync, então com o parâmetro -Excluir você pode excluir o arquivo ou pasta X e não copiá-lo. Mas ... você sabia que o cp também permite que você faça isso? ... O_O … sim amigos, cp tem seu próprio "excluir" hehe.
Por exemplo, temos a pasta isos que contém: ubuntu.iso, debian.iso y archlinux.iso :
E acontece que queremos copiar para a outra pasta (distros-deb, que está vazio) o arquivo debian.iso y ubuntu.iso, isto é, todos exceto archlinux.iso
Para isso poderíamos copiar um arquivo e depois outro, manualmente, mas é muito mais inteligente usar as opções que o sistema nos oferece, certo? … 😀… por exemplo, para fazer isso apenas:
cp isos/!(archlinux.iso) distros-deb/
E isso é o suficiente para copiar TUDO contido no diretório isos para distros-deb, tudo exceto archlinux.iso 😉
Mas suponha que não tenhamos apenas esses 3 arquivos, mas também tenhamos fedora.iso e chakra.iso ... e queremos fazer o mesmo, também seriam excluídos da cópia fedora.iso e chakra.iso, vamos ver como fazer isso:
cp isos/!(archlinux.iso|fedora.iso|chakra.iso) distros-deb/
Como você pode ver, vários arquivos ou pastas podem ser excluídos, nós apenas os separamos por um tubo (|) e assunto resolvido 😀
Com isso não quero dizer que cp seja melhor para tudo do que rsync ... mas, ambos são excelentes ferramentas, por exemplo ... você conhecia o parâmetro -u de cp? ... hehe, claro que não 😉
Bem, nada mais a acrescentar ... esta é uma dica interessante? 😀
lembranças
Eu não conhecia esse método, você sempre aprende algo novo.
Excelente dica, obrigado.
Obrigado
A dica é muito boa, não sabia! Resta apenas explicar aos usuários do Arch e do Fedora porque você excluiu suas iso's hehe
JAJAJAJAJAJA Não coloquei as ISOs Arch e Fedora porque o exemplo tentou copiar apenas distros Deb ... HAHAHAHAHA.
Aqui temos que fazer algumas observações. Uma é que isso só funciona se a opção extglob do bash estiver habilitada. Se não estiver, ele é ativado com este comando:
comprar -s extglob
Ele pode ser colocado no .bashrc para tê-lo sempre ativado.
O outro ponto é que esse truque não é uma opção do comando cp, mas funciona no nível do bash. O que significa que pode ser usado com qualquer comando. Não apenas com cp. Você pode fazer o teste escrevendo:
Arquivos echo: isos /! (archlinux.iso | fedora.iso | chakra.iso)
Caso contrário, é um truque muito útil. Junto com a opção -u para cp, que também acho útil de vez em quando.
Claro, é uma expressão regular
Na verdade, é um padrão estendido. Uma expressão regular é outra coisa, mas parece. 🙂
Sim, o -u em cp é realmente interessante. Admito que sou um grande fã de rsync ... mas não sei, tenho um apego ao pobre policial hahaha.
Sobre ativar o shopt, eu não sabia, presumi que funcionasse automaticamente, obrigado pela dica.
E sim, eu estava suspeitando que tinha mais a ver com Bash do que com cp, mas ainda não tinha tentado fazer um rm ou um gato ou algo parecido :)
Obrigado pelo comentário, eu realmente 😀
É um prazer fazer minha parte. 🙂
Na verdade, sempre me interessei em aprender sobre expressões regulares ... você fica animado e faz um post de novato sobre isso? 😀
RI MUITO!! Você já me tem. 🙂 Com o quão feliz eu estava sem comentários ... 🙂
Bem, a verdade é que ele está me chamando. 🙂 Mas eu ainda tenho que pensar um pouco sobre isso. Parece difícil de explicar.
hahahahaha nada não se preocupe, você fica comentando que ainda aprende ahahahaha, o importante é compartilhar 😀
Dica muito boa Você nunca irá para a cama sem aprender algo novo.
Exatamente, e o melhor de tudo é que aprendo muito com os comentários que você deixa nos posts, adoro aprender coisas estranhas todos os dias HAHAHA.
Bom truque. Eu não o conhecia 🙂
Um prazer 😉
Mas quando você coloca isos você quer dizer debian.iso ubuntu.iso /! (Etc etc)? não
Na verdade, acabou sendo uma dica muito interessante. Não apenas pelo próprio artigo, mas também pelo valor agregado dos comentários.
Linda comunidade de <º Linux
A tua ajuda não me serviu de nada, deves dar o exemplo, para que os alunos possam melhor compreender a tua magnífica técnica.
Obrigado por dedicar seu tempo, sempre lembrarei desta página em meu coração
você diz que pula diretórios, porém nos exemplos você pula apenas arquivos, você sabe como pular um diretório específico? Saudações.