La commande Find semble ne pas fonctionner du tout. Par exemple, je suis dans un répertoire où il y a absolument un fichier nommé index.php et j'exécute ceci:
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
Je reçois toujours cette erreur de fichier ou de répertoire.
Peu importe le chemin que je définis ou le fichier que je recherche, j'obtiens toujours cette erreur. Je suis sûr que j'oublie quelque chose de très simple. Quelqu'un peut-il signaler ce que je fais mal?
[root@server htdocs]# pwd
/srv/www/htdocs
[root@server htdocs]# type -a find
find is /usr/bin/find
[root@server htdocs]# ls -la | grep index.php
-rw-rw-r-- 1 andris users 413 Sep 1 2013 index.php
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
[root@server htdocs]# find .
.
find: .: No such file or directory
[root@server htdocs]# stat .
File: `.'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: ca00h/51712d Inode: 155686 Links: 12
Access: (0775/drwxrwxr-x) Uid: ( 504/ andris) Gid: ( 100/ users)
Access: 2014-06-17 19:37:22.000000000 +0000
Modify: 2014-06-08 21:06:16.000000000 +0000
Change: 2014-06-08 21:06:16.000000000 +0000
[root@server htdocs]# find --version
GNU find version 4.2.27
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX
strace find .
sortie: https://gist.github.com/andrisp/f3adaf740548eead33da
[root@server htdocs]# find . -noleaf -name "index.php"
find: .: No such file or directory
ls -la|grep "index.php"
dit-on?find .
ne fonctionne pas non plus? Et alorsls -al
?find .
trouve l'.
entrée, puis se plaint qu'elle n'existe pas est curieux. Apparemment, c'est un bug avecfind
quelle version utilisez-vous?strace find .
quelque part?Réponses:
Selon votre
strace
sortie, et je n'ai aucune idée de la raison, lesopen()
noms de fichiers de préfixe de fonction avec/proc/
:la source
Vous ne disposez peut-être pas de l'autorisation d'exécution pour votre utilisateur pour le répertoire que vous recherchez. A-t-il une autorisation de lecture et d'exécution?
la source
Essayez-le avec le chemin absolu comme:
Et comme déjà mentionné ci-dessus, il se peut que vous ne disposiez pas d'autorisations. Que se passe-t-il si vous:
Votre coque sait-elle quoi faire avec le point?
la source
Vous pouvez utiliser
La meilleure façon de rechercher un fichier ou un dossier est:
updatedb
(pour mettre à jour l'index des fichiers système).locate Myfile
la source
updatedb
etlocate
nécessite qu'un package qui fournit les deux à installer (par exemple,mlocate
).J'utilise la version 6.4 de Red Hat Enterprise Linux Server (Santiago). Vous pouvez vous assurer que vous utilisez le trouver droit soit
/usr/bin
ou/bin
pour vous assurer que la commande find est là. Si vous ne pouvez même pas faire unman
onfind
, essayez de changer votre shell en/bin/ksh
ou/bin/bash
. J'ai trouvé que les variables d'environnement et les chemins peuvent se confondre de temps en temps.la source
Comme d'autres l'ont mentionné, l'utilisation du chemin complet du binaire de recherche peut être utile. Il est possible que la recherche soit aliasée avec des indicateurs supplémentaires sur votre système. La saisie
\find
empêchera également l'utilisation d'alias. Vous pouvez également utiliseralias
pour afficher les alias de commande dans votre session shell actuelle.la source
J'ai vu cela se produire sur Mac lorsque le répertoire est sur un support amovible qui a été supprimé et ré-ajouté depuis l'ouverture de la fenêtre du terminal. Je ne peux pas expliquer pourquoi (cela a probablement à voir avec les informations mises en cache au démarrage de la session de terminal), mais c'était reproductible. Je viens de redémarrer la session de terminal et tout allait bien.
la source