현재 디렉터리에서 찾기를 사용할 때 "find: .: 해당 파일이나 디렉터리가 없습니다."가 나타납니다.

현재 디렉터리에서 찾기를 사용할 때 "find: .: 해당 파일이나 디렉터리가 없습니다."가 나타납니다.

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

답변1

귀하의 출력에 따르면 함수의 파일 이름 앞에 다음이 붙는 strace이유를 모르겠습니다 .open()/proc/

open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
getdents64(4, /* 21 entries */, 32768) = 664
getgid32() = 0
stat64("/proc/index.php", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/.svn", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/init-dist.php", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/landing-page.html", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
[...]
stat64("/proc/js", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/extras", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getgid32() = 0
stat64("/proc/sitemaps", 0xbfc53bd0) = -1 ENOENT (No such file or directory)
getdents64(4, /* 0 entries */, 32768) = 0

답변2

Mac에서 디렉토리가 이동식 미디어에 있고 터미널 창이 열린 이후 미디어가 삭제되고 읽혀졌을 때 이런 일이 발생하는 것을 본 적이 있습니다. 이유는 설명할 수 없지만(아마도 터미널 세션이 시작될 때 캐시된 정보와 관련이 있을 것임) 재현 가능합니다. 방금 터미널 세션을 다시 시작했는데 모든 것이 정상입니다.

답변3

다음과 같은 절대 경로를 사용해 보십시오.

   sudo find /where/your_file_is/located/ -iname "index.php"

위에서 이미 언급했듯이 권한이 없을 수도 있습니다. 다음과 같은 경우에는 어떻게 되나요?

ls . 

쉘이 이를 처리하는 방법을 알고 있습니까?

답변4

사용자에게 검색 중인 디렉터리에 대한 실행 권한이 없을 수 있습니다. 읽기 및 실행 권한이 있습니까?

관련 정보