Respostas:
Se os nomes dos arquivos forem numerados sequencialmente, execute o seguinte comando:
rm fileName_{100..100000}
execchamada ao número de argumentos que um processo pode ter. Você pode recuperá-lo com getconf ARG_MAX. Por exemplo, no meu sistema, é 2097152(~ 2,1 milhões). Isso significa que rm(que não é um built-in) falhará com mais do que muitos arquivos. Os comandos internos não têm esse problema e as outras soluções propostas também não.
Você pode tentar este comando também,
for i in $(seq 100 100000); do rm fileName_$i; done
Ele excluirá todos os arquivos (varia de 100 a 100000) se o nome do arquivo contiver números em uma ordem sequencial.
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 da base for um caminho longo e o número for alto o suficiente, você poderá realmente exceder o comprimento máximo de uma linha de comando com essa abordagem.
O forlaço
for i in $(seq 100 100000); do rm fileName_$i; done
não sofre com esse problema, mas é uma maneira relativamente lenta de excluir os arquivos, pois o shell precisa executar a substituição de variável e iniciar a rm cerca de 100.000 vezes.
Os dois métodos acima podem causar avisos se alguns dos arquivos, por exemplo, filename_101 estiverem ausentes.
Geralmente, as soluções baseadas findsão melhores, pois funcionam apenas em arquivos que estão realmente lá (durante a descoberta). No entanto, existem algumas diferenças sutis:
find . -name 'fileName_[100-100000]' -exec rm {} \;
ainda lançará o rmprograma cerca de 100.000 vezes, enquanto a substituiçã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 usar-delete que não usa comandos externos, mas invoca chamadas do sistema.
No entanto, sempre verifique primeiro se o padrão realmente corresponde aos arquivos que você deseja direcionar:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
Portanto, nesse caso, você excluiria um arquivo que desejava manter e deixaria os arquivos que deveriam ter sido removidos.
Use o seguinte comando:
find . -name 'fileName_[100-100000]' -exec rm {} \;
Isso excluirá arquivos de 100 a 100000.
Mais informações: Site
[100-100000] classe de caracteres corresponde apenas um único personagem, por isso só pode corresponder 0 ou 1.
{x..y}para a lista inteira. Por exemplo, se você usá-echo test{1..3}lo, ele será expandidoecho test1 test2 test3e executado. Como você pode ver, ele imprimetest1 test2 test3. Da mesma forma, se{x..y}não estiver conectado a nenhum argumento, ele apenas colocará os números lá. Por exemploecho test {1..3}, apenas imprimirátest 1 2 3.