540 votes

Comment trouver un répertoire sous linux ?

J'ai un VPS avec Suse Linux 10.3 .

Je me suis connecté via SSH/putty et j'essaie de trouver où se trouvent mes fichiers web.

Puisque je télécharge via FTP dans un répertoire appelé httpdocs Je suppose que ce répertoire existe quelque part.

Mes recherches sur Google m'ont appris à faire cela, allez dans mon répertoire racine et tapez :

find httpdocs -type d

mais il est écrit " Aucun fichier ou répertoire de ce type ".

Comment puis-je trouver ce répertoire ?

5 votes

Au cas où quelqu'un se poserait la question, la commande dans la question trouve tous les répertoires ( -type d ) dans l'entrée du répertoire httpdocs (relatif au répertoire de travail actuel, généralement mais pas nécessairement un répertoire). Elle échoue avec un message d'erreur car il n'y a pas d'entrée dans le répertoire httpdocs dans le répertoire racine du système, et donc aucun point de départ pour une recherche.

726voto

OldJim Points 7406

Elle l'est :

find / -type d -name 'httpdocs'

le premier paramètre "/" est l'endroit où chercher, dans ce cas "/" c'est le système entier.

-name pourrait être -iname pour ne pas tenir compte de la casse.

également -type n'est pas obligatoire

utiliser : homme trouver pour plus d'options

99 votes

Cela n'a pas d'importance pour les recherches simples, mais pour les commandes de recherche plus complexes, il est important de noter que les éléments sont évalués dans l'ordre où ils se trouvent sur la ligne de commande. Ainsi, vous pouvez avoir le -type d (répertoires uniquement) avant le -name, afin d'accélérer les choses. Encore une fois, cela n'a peut-être pas beaucoup d'importance ici, mais lorsque vous effectuez des recherches plus complexes, cela peut améliorer considérablement la vitesse de recherche.

15 votes

En fait, le -name est plus rapide que la plupart des autres tests puisque -name est comparée à la liste du répertoire, qui est déjà chargée depuis le disque, et les autres tests doivent effectuer un stat(2) pour obtenir des informations sur les fichiers. Après le premier stat() appel pour un fichier, un test ultérieur obtenir de la mémoire, par exemple : -type f -mtime -10 .

25 votes

Si vous souhaitez effectuer une recherche sur l'ensemble du système de fichiers, en particulier sur un serveur, il est généralement préférable d'utiliser la commande nice pour que la recherche ne prenne pas trop de ressources aux processus plus critiques : nice find / ...

71voto

Zypher Points 2177

Cette commande devrait vous permettre d'obtenir ce que vous recherchez :

find / -type d -name httpdocs

qui recherchera, à partir de la racine de votre serveur, les répertoires portant le nom de httpdocs. Si vous souhaitez simplement effectuer une recherche à partir du répertoire courant, remplacez le '/' par un '.'.

Une autre commande que vous pouvez essayer est la localisation, vous feriez quelque chose comme :

locate httpdocs

0 votes

Locate httpdocs me dit "locate : command not found" (commande non trouvée)

4 votes

Pour ceux qui utilisent la commande "locate" (à condition qu'elle existe dans votre système), assurez-vous que la base de données qu'elle recherche est à jour ; normalement, une tâche cron s'en occupe. Sinon, exécutez "updatedb" (en tant que root). Ensuite, lancez votre nécessaire "locate <somefile>". Ceci est nécessaire pour trouver les fichiers/dossiers récemment ajoutés.

1 votes

+1 pour la localisation. C'est beaucoup plus rapide, mais seulement si son index est à jour. Heureusement, quelque chose comme "httpdocs" ne changera pas fréquemment d'emplacement. Si vous avez l'intention de rechercher de manière répétée des fichiers sur une machine, cela vaut la peine de consacrer quelques minutes à la mise en place de la tâche cron updatedb.

33voto

user2940456 Points 431
find / -type d -name httpdocs 2> /dev/null

Cela éliminera tous les messages d'erreur que vous obtiendrez probablement (lire, toujours) si vous ne le faites pas en tant qu'utilisateur root. Je vous recommande de le faire de cette façon.

4 votes

El 2> /dev/null est très utile. Sinon, il peut être difficile de voir les résultats souhaités...

0 votes

17voto

CoderBrien Points 339

Il est important de connaître le paramètre -iname pour rechercher des motifs "insensibles à la casse" et l'utilisation des caractères de remplacement : *, ?, etc.

Deux exemples :

Rechercher tous les fichiers de /root qui contiennent la chaîne "Linux", sans tenir compte de la casse :

find  /root -type f -iname "*linux*"

Rechercher tous les répertoires de /root qui contiennent la chaîne "Linux", sans tenir compte de la casse :

find  /root -type d -iname "*linux*"

Extrait d'ici :

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html

0 votes

Cette question porte sur la manière de trouver un répertoire dont vous connaissez le nom, et non sur la manière de trouver un répertoire dont vous connaissez le nom (approximativement). De plus, la réponse acceptée (il y a plus de 6 ans !) mentionne déjà -iname comme une alternative insensible à la casse à la place de -name .

10voto

Vous l'avez presque. la syntaxe correcte serait :

find / -type d -name httpdocs

Le répertoire se trouve probablement sous /var/www/

0 votes

Qui me dit "les chemins doivent précéder l'expression"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X