J’ai un répertoire contenant environ 100 000 fichiers, et je veux exécuter certaines fonctions sur tous les fichiers en commençant par une chaîne spécifiée, qui peut correspondre à des dizaines de milliers de fichiers.
j’ai essayé
ls myssortingng*
mais cela revient avec l’erreur bash “Trop d’arguments”. Mon prochain plan était d’utiliser
find ./myssortingng* -type f
mais cela a le même problème.
Le code doit ressembler à quelque chose
for FILE in `find ./myssortingng* -type f` do #Some function on the file done
Merci d’avance, Rik
utilisation
find . -name 'myssortingng*'
ls | grep "^a"
vous donnera tous les fichiers commençant par la lettre a et fonctionnera sur le répertoire en cours alors que find explorera les sous-répertoires par défaut.
Je ne dis pas que c’est mieux – juste un angle différent.
Si vous souhaitez limiter votre recherche uniquement aux fichiers, vous devriez envisager d’utiliser -type f
dans votre recherche
essayer d’utiliser également -iname
pour la recherche insensible à la casse
Exemple:
find /path -iname 'yourssortingng*' -type f
Vous pouvez également effectuer certaines opérations sur les résultats sans signe de conduite ou xargs
Exemple:
Rechercher des fichiers et afficher leur taille en Mo
find /path -iname 'yourssortingng*' -type f -exec du -sm {} \;