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


149

J'ai un répertoire contenant environ 100 000 fichiers et je souhaite 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 mystring*

mais cela revient 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

Au lieu d'une forboucle, vous devez vous diriger findvers while.
Suspendu jusqu'à nouvel ordre.

Réponses:


277

utilisation

find . -name 'mystring*'

10
et pour exécuter une fonction "find. -name 'mystring *' -exec [commande]" par exemple, supprimez "find. -name 'mystring *' -exec rm {} \;"
Eldar

2
Où {} est un espace réservé pour le nom de fichier :-) (afin que vous puissiez
créer

1
Cela semble renvoyer tous les résultats contenant la chaîne? Le
Brian Z

7
... ou find . -iname 'mystring*'pour une recherche insensible à la casse.
Frank Nocke

OP fait référence à un seul répertoire donc insérez -maxdepth 1avant la recherche -namede limite au dossier actuel
jacanterbury

27
ls | grep "^abc"  

vous donnera tous les fichiers commençant (ce qui est spécifiquement requis par l'OP) par la sous-chaîne abc.
Il ne fonctionne que sur le répertoire courant alors qu'il findfonctionne de manière récursive dans les sous-dossiers.

À utiliser finduniquement pour les fichiers commençant par votre chaîne, essayez

trouver . -nom 'abc' *


4

Si vous souhaitez limiter votre recherche uniquement aux fichiers, vous devez envisager d'utiliser -type fdans votre recherche

essayez de l'utiliser également -inamepour la recherche insensible à la casse

Exemple:

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

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

Exemple:

Rechercher des fichiers et afficher leur taille en Mo

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.