현재 디렉토리에서 찾기를 사용하는 동안 "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

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

관련 정보