AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 407079
Accepted
HabibieND
HabibieND
Asked: 2017-11-26 21:19:56 +0800 CST2017-11-26 21:19:56 +0800 CST 2017-11-26 21:19:56 +0800 CST

Como encontrar tipos de arquivos específicos e tar-los?

  • 772

Parece que tenho um problema. Eu tenho alguns tipos de arquivos diferentes em meu diretório atual e quero apenas tar os arquivos .png . Eu comecei com isso:

find -name "*.png" | tar -cvf backupp.tar

Não funcionaria porque não especifiquei quais arquivos, então, olhando como os outros fizeram, adicionei xargs:

find -name "*.png" | xargs tar -cvf backupp.tar

Funcionou desta vez, e o arquivo backupp.tar foi criado, mas aqui está o problema. Não consigo extraí-lo. Sempre que eu digito:

tar -xvf backupp.tar

Nada acontece. Já tentei trocar chmod e sudo, mas nada cede.

Então, eu digitei o comando errado completamente ou há algo que eu perdi?

linux files
  • 2 2 respostas
  • 8810 Views

2 respostas

  • Voted
  1. Best Answer
    igal
    2017-11-26T21:45:05+08:002017-11-26T21:45:05+08:00

    Cada uma de suas duas abordagens estava perto de funcionar, mas cada uma tinha um problema distinto.

    Em sua primeira abordagem, você tenta canalizar uma lista de arquivos para tar. Se você quiser tarler a lista de arquivos da entrada padrão, deverá usar as opções -T/ --files-frome -, por exemplo

    find -name '*.png' -print0 | tar -cvf backup.tar --null -T - 
    

    Para obter uma referência, consulte a documentação oficial:

    • GNU tar Manual: Seção 6.3 - Lendo nomes de um arquivo

    NOTA: O uso dos sinalizadores -print0e --nulldeve garantir que isso também lide com nomes de arquivos que incluam espaços em branco.

    Em sua segunda abordagem, você tenta executar tarvia xargs, mas está usando a opção "criar" ( --create/ -c). Se você usar a opção "criar" com xargsou em um loop for, ela substituirá o arquivo após cada iteração. Em vez disso, tente usar a opção "acrescentar" ( -a/ --append) ou a opção "atualizar" ( -u/ --update), por exemplo:

    find -name "*.png" -exec tar -uvf backupp.tar {} \;
    

    Isso anexará arquivos ao arquivo após cada iteração, em vez de sobrescrevê-lo.

    De qualquer forma, quando terminar, você pode usar a opção "listar" ( --list/ -t) para visualizar o conteúdo do arquivo e verificar se tudo funcionou conforme o esperado:

    tar tf backupp.tar
    
    • 4
  2. etopylight
    2017-11-26T21:49:33+08:002017-11-26T21:49:33+08:00

    Você pode simplesmente usar o curinga

    tar -cvf backup.tar *.png
    

    ou usandofind

    find -name "*.png" | tar -cvf backup.tar -T -
    

    a -Topção obtém o nome do arquivo de FILE que neste caso é stdin-

    • 2

relate perguntas

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • du/df e ls relatando diferentes usos de disco

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve