Como copiar todos os arquivos sem uma extensão específica para outro diretório?
772
Eu tenho dois diretórios dir1e dir2. Eu quero copiar todos os arquivos e pastas, dir1exceto dir2os arquivos que têm .txtextensão. Como posso fazer isso?
cd dir1 && LC_ALL=C pax -rwpe -'s|.*\.txt||' . ../dir2
Esteja ciente de que pelo menos com a implementação de http://www.mirbsd.org/pax.htm (como encontrado no MirBSD ou no paxpacote no Debian por exemplo), ele também exclui links simbólicos cujo destino termina em .txtmesmo que os links simbólicos se nomeiem não termine em .txt.
Outra diferença rsyncé que, embora exclua diretórios cujo nome termine em .txt, ele não exclui arquivos não-txt nesses diretórios. Adicione um -s'|.*\.txt/.*||'para também excluí-los.
-petenta preservar o máximo de metadados possível (cuja lista varia com a paximplementação). Com rsync, consulte as opções -a( -rlptgoD), -AXUHNpara selecionar o que deseja preservar.
Usando
rsync
com--exclude
opção.POSIXly:
Esteja ciente de que pelo menos com a implementação de http://www.mirbsd.org/pax.htm (como encontrado no MirBSD ou no
pax
pacote no Debian por exemplo), ele também exclui links simbólicos cujo destino termina em.txt
mesmo que os links simbólicos se nomeiem não termine em.txt
.Outra diferença
rsync
é que, embora exclua diretórios cujo nome termine em.txt
, ele não exclui arquivos não-txt nesses diretórios. Adicione um-s'|.*\.txt/.*||'
para também excluí-los.-pe
tenta preservar o máximo de metadados possível (cuja lista varia com apax
implementação). Comrsync
, consulte as opções-a
(-rlptgoD
),-AXUHN
para selecionar o que deseja preservar.