Question

Je recherche des fichiers de scripts shell installés sur mon système, mais trouver ça ne marche pas :

$ find /usr -name *.sh

Mais je sais qu'il existe une tonne de scripts.Par exemple:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh  
/usr/local/lib/tkConfig.sh

Pourquoi pas trouver travail?

Était-ce utile?

La solution

Essayez de citer le caractère générique :

$ find /usr -name \*.sh

ou:

$ find /usr -name '*.sh'

Si vous avez un fichier qui correspond *.sh dans le répertoire de travail actuel, le caractère générique sera développé avant que find ne le voie.Si vous avez un fichier nommé tkConfig.sh dans votre répertoire de travail, le trouver la commande s'étendrait à :

$ find /usr -name tkConfig.sh

qui ne trouverait que les fichiers nommés tkConfig.sh.Si vous aviez plus d'un fichier correspondant *.sh, vous obtiendrez une erreur de syntaxe de trouver:

$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list

Encore une fois, la raison est que le caractère générique s'étend aux deux fichiers :

$ find /usr -name tclConfig.sh tkConfig.sh

Citer le caractère générique empêche son extension prématurée.

Une autre possibilité est que /usr ou l'un de ses sous-répertoires soit un lien symbolique. trouver ne suit normalement pas les liens, vous pourriez donc avoir besoin du -suivre option:

$ find /usr -follow -name '*.sh'

Autres conseils

Sur certains systèmes (Solaris, par exemple), il n'y a pas d'action par défaut, vous devez donc ajouter la commande -print.

find /usr -name '*.foo' -print

Pour trouver des fichiers sur vos disques, utilisez plutôt « localiser » qui est instantané (examine un index construit quotidiennement) Votre exemple serait :

locate '/usr*.sh'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top