
eu tenho arquivosnome do arquivo_1,nome do arquivo_2...nome do arquivo_100000onde os fileNames são numerados sequencialmente. Como posso excluir os arquivos de índice maior que, digamos100?
Responder1
Se os nomes dos arquivos forem numerados sequencialmente, basta executar o seguinte comando:
rm fileName_{100..100000}
Responder2
Você também pode tentar este comando,
for i in $(seq 100 100000); do rm fileName_$i; done
Ele excluirá todos os arquivos (varia de 100 a 100.000) se o nome do arquivo contiver números em ordem sequencial.
Responder3
Em geral, você tem várias maneiras de conseguir isso:
rm fileName_{100..100000}
será expandido pelo shell em aproximadamente 100.000 nomes de arquivos. Se o nome base for um caminho longo e o número for alto o suficiente, você poderá exceder o comprimento máximo de uma linha de comando com esta abordagem.
O for
laço
for i in $(seq 100 100000); do rm fileName_$i; done
não sofre deste problema, mas é uma forma relativamente lenta de deletar os arquivos, já que o shell tem que realizar a substituição de variáveis e lançar o rm cerca de 100.000 vezes.
Ambos os métodos acima podem causar avisos se alguns dos arquivos, por exemplo, filename_101
estiverem faltando.
Normalmente, as soluções baseadas em find
são melhores, pois funcionam apenas em arquivos que realmente estão lá (durante a descoberta). No entanto, existem algumas diferenças sutis:
find . -name 'fileName_[100-100000]' -exec rm {} \;
ainda iniciará o rm
programa cerca de 100.000 vezes, enquanto substituirá o final \;
por +
tentará minimizar o número de subprocessos. Ambos os métodos provavelmente serão (muito ou um pouco) mais lentos do que using, -delete
que não usa comandos externos, mas invoca chamadas do sistema.
No entanto,sempreverifique primeiro se o padrão realmente corresponde aos arquivos que você deseja atingir:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
Então, neste caso, você excluiria um arquivo que queria manter e deixaria os arquivos que deveriam ter sido removidos.
Responder4
Use o seguinte comando:
find . -name 'fileName_[100-100000]' -exec rm {} \;
Isso excluirá arquivos de 100 a 100.000 .
Mais Informações:Site