Eu tenho um diretório com aproximadamente 100000 arquivos e desejo executar alguma função em todos os arquivos que começam com uma sequência especificada, que pode corresponder a dezenas de milhares de arquivos.
eu tentei
ls mystring*
mas isso retorna com o erro do bash 'Muitos argumentos'. Meu próximo plano era usar
find ./mystring* -type f
mas isso tem o mesmo problema.
O código precisa parecer algo como
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done
for
loop, você devefind
entrarwhile
.Respostas:
usar
fonte
find . -iname 'mystring*'
para pesquisa sem distinção entre maiúsculas e minúsculas.-maxdepth 1
antes do-name
encontrar limite para a pasta atualfornecerá todos os arquivos começando (que é o que o OP especificamente exigiu) com a substring
abc
.Ele opera apenas no diretório atual, enquanto
find
opera recursivamente em subpastas.Para usar
find
apenas arquivos começando com sua string, tentefonte
Se você deseja restringir sua pesquisa apenas aos arquivos que deve considerar usar
-type f
em sua pesquisatente usar também
-iname
para pesquisa que não diferencia maiúsculas de minúsculasExemplo:
Você também pode executar algumas operações nos resultados sem sinal de tubulação ou xargs
Exemplo:
Pesquise arquivos e mostre seu tamanho em MB
fonte