Команда Find, похоже, не работает вообще. Например, я нахожусь в каталоге, где есть файл index.php, и я выполняю это:
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
Я всегда получаю это не такой файл или ошибка каталога.
Независимо от того, какой путь я определяю или какой файл я ищу, я всегда получаю эту ошибку. Я почти уверен, что пропускаю что-то очень простое. Может кто-то указать, что я делаю не так?
[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 .
вывод: 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"
говорит?find .
тоже не работает? Как насчетls -al
?find .
находит.
запись, а затем жалуется, что она не существует, любопытно. Похоже, это ошибка, сfind
какой версией вы пользуетесь?strace find .
где-то?Ответы:
Согласно вашему
strace
выводу, и я понятия не имею о причине,open()
префикс функции имен файлов с/proc/
:источник
Возможно, у вас нет прав на выполнение для каталога, из которого вы ищете. Имеет ли он разрешение на чтение и выполнение?
источник
Попробуйте это с абсолютным путем, как:
И, как уже упоминалось выше, возможно, у вас нет прав. Что произойдет, если вы:
Ваша оболочка знает, что делать с точкой?
источник
Ты можешь использовать
Лучший способ поиска файла или папки:
updatedb
(для обновления индекса файлов системы).locate Myfile
источник
updatedb
иlocate
требуют, чтобы пакет, который обеспечивает оба, чтобы быть установлен (например,mlocate
).Я использую Red Hat Enterprise Linux Server версии 6.4 (Сантьяго). Вы можете убедиться , что вы используете правильную находку либо
/usr/bin
или ,/bin
чтобы убедиться , что команда находки есть. Если вы не можете даже сделатьman
наfind
, попробуйте изменить свою оболочку либо/bin/ksh
или/bin/bash
. Я обнаружил, что переменные окружения и пути могут путаться время от времени.источник
Как уже упоминалось, может помочь использование полного пути к двоичному файлу поиска. Возможно, в вашей системе есть дополнительные флаги. Печатание
\find
также предотвратит использование любых псевдонимов. Вы также можете использоватьalias
для просмотра псевдонимов команд в текущем сеансе оболочки.источник
Я видел, как это происходит на Mac, когда каталог находится на съемном носителе, который был удален и прочитан с момента открытия окна терминала. Я не могу объяснить, почему (вероятно, это связано с информацией, кэшированной при запуске терминальной сессии), но это было воспроизводимо. Просто перезапустил терминальную сессию и все было хорошо.
источник