web-dev-qa-db-fra.com

Trouver tous les fichiers avec un nom de fichier commençant par une chaîne spécifiée?

J'ai un répertoire contenant environ 100 000 fichiers et je souhaite exécuter une fonction sur tous les fichiers commençant par une chaîne spécifiée, pouvant correspondre à des dizaines de milliers de fichiers.

J'ai essayé

ls mystring*

mais cela retourne avec l'erreur bash 'Trop d'arguments'. Mon prochain plan était d'utiliser

find ./mystring* -type f

mais cela a le même problème.

Le code doit ressembler à quelque chose comme

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

Merci d'avance, Rik

134
RikSaunderson

utilisation

find . -name 'mystring*'
243
Sergio Tulentsev
ls | grep "^a"  

vous donnera tous les fichiers commençant par la lettre a et ne fonctionne que sur le répertoire courant alors que find explorera les sous-répertoires par défaut.

Je ne dis pas que c'est mieux - juste un angle différent.

23
jacanterbury

Si vous souhaitez limiter votre recherche aux fichiers, utilisez plutôt -type f dans votre recherche.

essayez également d'utiliser -iname pour la recherche non sensible à la casse

Exemple:

find /path -iname 'yourstring*' -type f

Vous pouvez également effectuer certaines opérations sur les résultats sans signe de conduite ni xargs.

Exemple:

Rechercher des fichiers et afficher leur taille en Mo

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
3
matson kepson