technology

Maneira simples de copiar e mover um grande número de arquivos usando o Terminal

.

Deseja copiar ou mover 5.00.000 ou mais arquivos de uma só vez, mas o terminal reclama que a “lista de argumentos é muito longa”.

Se você criou muitos arquivos usando o método descrito neste artigo (“crie vários arquivos e diretórios de uma só vez em um terminal Linux”), pode ser difícil movê-los ou copiá-los todos de uma vez para um novo local.

Felizmente, existem alguns métodos para mover ou copiar de forma rápida e fácil um grande número de arquivos no Linux. Um desses métodos é usar as ferramentas de linha de comando cp, tare rsyncque permitem copiar e mover um grande número de arquivos de forma rápida e fácil, mas têm um certo limite após o qual um comando gerará um erro.

Então, vamos dar uma olhada em como copiar e mover com eficiência um grande número de arquivos da linha de comando.

Crie um problema para mover um grande número de arquivos usando o comando touch

Por uma questão de clareza, deixe-me usar meu sistema para criar 5.00.000 arquivos com o touch comandoque levará alguns minutos, e então testaremos nossos comandos nos arquivos recém-criados.

Se desejar, você também pode criar um grande número de arquivos executando o seguinte comando:

$ for i in {1..500000};do touch filename$i.txt; done

Assim que estiver pronto, deixe-me executar o mv comando para mover todos os arquivos para o novo local. Como esperado, o terminal imprime “mv * temp zsh: lista de argumentos muito longa: mv.”

Resolva um problema para mover um grande número de arquivos usando o comando find

A razão é simples: o kernel tem algumas limitações que variam de sistema operacional para sistema operacional que restringem o número de argumentos que você pode passar em uma única linha de comando.

E quando você executa comandos como mv, cp, rmou tarsua lista de argumentos se torna muito longa à medida que o número de arquivos aumenta além do limite do kernel, e isso eventualmente levará ao erro de lista de argumentos muito longa.

Para resolver este problema, podemos usar o find comando com o -exec opção para executar nosso comando no grande número de arquivos

Mas se você quiser saber o limite do kernel, pode executar o comando getconf ARG_MAX no seu terminal, que lhe dará o número máximo de argumentos que podem ser passados ​​em uma única linha de comando para evitar o erro de argumentos.

Tudo bem, chega de bate-papo! Deixe-me agora demonstrar um método para copiar ou mover rapidamente um grande número de arquivos de um terminal.

Seção de Comando

Ao utilizar o find comando com -exec opção, permite uma cópia muito mais eficiente de grandes quantidades de arquivos, facilitando o acesso dos usuários aos seus dados e armazená-los no local especificado

Quando você deseja copiar um grande número de arquivos, deve usar o comando find com -execque copiará o arquivo do resultado de um comando find e o moverá para o local especificado.

Aqui está a sintaxe que você precisa usar em seu terminal; apenas substitua os dados pelos reais.

$ find /FILE-PATH/ -name "PASS-FILE-PATTERN" -exec cp {} "/PASS-TARGET-DIRECTORY/" ;

Digamos que eu queira copiar todos os arquivos em /home/shen/test-arena para o novo diretório /home/shen/test-dircriarei o seguinte comando para copiar todos os arquivos.

$ find /home/shen/test-arena -name "filename*" -exec cp {} -v /home/shen/test-dir ;

O mesmo que posso fazer para mover todo o arquivo grande de arena de teste para test-dir apenas substituindo o comando cp por mv e rest todas as coisas serão as mesmas

$ find /home/shen/test-arena -name "filename*" -exec mv {} -v /home/shen/test-dir ;

E você pode até mesmo restringir o comando find para procurar arquivos apenas no diretório atual usando o comando -profundidade máxima parâmetros, como mostrado no comando abaixo:

$ find . -maxdepth 1 -name "file_*" -exec cp {} -v target/ ;
or
$ find . -maxdepth 1 -name "file_*" -exec mv {} -v target/ ;

Embrulhar

Espero que este artigo tenha ajudado você a entender como mover e copiar muitos arquivos em um sistema baseado em Unix e como descobrir qual é o limite do kernel.

Se você conhece algum outro método de mover e copiar um grande número de arquivos, compartilhe-os na seção de comentários.

Com isso em mente, vou encerrar este guia. Se você tiver mais sugestões, compartilhe-as abaixo.

.

Mostrar mais

Artigos relacionados

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Botão Voltar ao topo