Der Befehl Suchen scheint überhaupt nicht zu funktionieren. Zum Beispiel bin ich in einem Verzeichnis, in dem es absolut die Datei index.php gibt, und führe Folgendes aus:
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
Ich bekomme immer keinen solchen Datei- oder Verzeichnisfehler.
Egal welchen Pfad ich definiere oder nach welcher Datei ich suche, ich erhalte immer diesen Fehler. Ich bin mir ziemlich sicher, dass ich etwas sehr Einfaches übersehen habe. Kann jemand darauf hinweisen, was ich falsch mache?
[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 .
Ausgabe: 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"
sagt das aus?find .
funktioniert auch nicht? Was ist mitls -al
?find .
der.
Eintrag gefunden wird und sich dann beschwert, dass er nicht existiert, ist merkwürdig. Anscheinend ist dies ein Fehler mitfind
welcher Version verwenden Sie?strace find .
irgendwo posten ?Antworten:
Entsprechend Ihrer
strace
Ausgabe und ich habe keine Ahnung über den Grund, dieopen()
Funktion Präfix Dateinamen mit/proc/
:quelle
Möglicherweise haben Sie für Ihren Benutzer keine Ausführungsberechtigung für das Verzeichnis, aus dem Sie suchen. Hat es Lese- und Ausführungsberechtigung?
quelle
Versuchen Sie es mit dem absoluten Pfad wie:
Und wie oben bereits erwähnt, kann es sein, dass Sie keine Berechtigungen haben. Was passiert, wenn Sie:
Weiß Ihre Shell, was mit dem Punkt zu tun ist?
quelle
Sie können verwenden
Der beste Weg, um nach Dateien oder Ordnern zu suchen, ist:
updatedb
(zum Aktualisieren des Systemdatei-Index).locate Myfile
quelle
updatedb
undlocate
benötigen, das beides bereitstellt, um installiert zu werden (zmlocate
. B. ).Ich verwende Red Hat Enterprise Linux Server Version 6.4 (Santiago). Sie können sicherstellen, dass Sie entweder die richtige Suche verwenden
/usr/bin
oder/bin
dass der Befehl find vorhanden ist. Wenn Sie nicht einmal ein tun können ,man
auffind
, versuchen Sie Ihre Shell zu ändern , um entweder/bin/ksh
oder/bin/bash
. Ich habe festgestellt, dass Umgebungsvariablen und Pfade von Zeit zu Zeit verwirrt werden können.quelle
Wie bereits erwähnt, kann es hilfreich sein, den vollständigen Pfad zur Find-Binärdatei zu verwenden. Es ist möglich, dass find mit zusätzlichen Flags auf Ihrem System versehen ist. Durch die Eingabe
\find
wird verhindert, dass auch Aliase verwendet werden. Sie können auchalias
Befehlsaliasnamen in Ihrer aktuellen Shell-Sitzung anzeigen.quelle
Ich habe gesehen, dass dies auf einem Mac passiert, wenn sich das Verzeichnis auf einem Wechselmedium befindet, das seit dem Öffnen des Terminalfensters entfernt und erneut gelesen wurde. Ich kann nicht erklären, warum (hat wahrscheinlich mit Informationen zu tun, die beim Start der Terminalsitzung zwischengespeichert wurden), aber sie waren reproduzierbar. Ich habe gerade die Terminalsitzung neu gestartet und alles war in Ordnung.
quelle