Perintah find sepertinya tidak bekerja sama sekali. Sebagai contoh, saya berada di direktori di mana benar-benar ada file bernama index.php dan saya menjalankan ini:
[root@server htdocs]# find . -name "index.php"
find: .: No such file or directory
Saya selalu mendapatkan ini tidak ada kesalahan file atau direktori tersebut.
Tidak peduli jalur apa yang saya tetapkan, atau file apa yang saya cari, saya selalu mendapatkan kesalahan ini. Saya cukup yakin bahwa saya menghadap sesuatu yang sangat sederhana. Bisakah seseorang menunjukkan kesalahan saya?
[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 .
keluaran: 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"
dikatakan?find .
tidak bekerja juga? Bagaimana denganls -al
?find .
menemukan.
entri, kemudian mengeluh bahwa itu tidak ada adalah penasaran. Tampaknya ini adalah bug denganfind
, versi apa yang Anda gunakan?strace find .
suatu tempat?Jawaban:
Menurut
strace
hasil Anda , dan saya tidak tahu tentang alasannya,open()
fungsi awalan nama file dengan/proc/
:sumber
Anda mungkin tidak memiliki izin eksekusi untuk pengguna Anda dari direktori yang Anda cari. Apakah sudah membaca dan menjalankan izin?
sumber
Cobalah dengan jalur absolut seperti:
Dan seperti yang telah disebutkan di atas, mungkin Anda tidak memiliki izin. Apa yang terjadi jika Anda:
Apakah shell Anda tahu apa yang harus dilakukan dengan titik?
sumber
Kamu bisa menggunakan
Cara terbaik untuk mencari file atau folder adalah:
updatedb
(untuk memperbarui indeks file sistem).locate Myfile
sumber
updatedb
danlocate
mengharuskan paket yang menyediakan keduanya diinstal (misalnya,mlocate
).Saya menggunakan Red Hat Enterprise Linux Server rilis 6.4 (Santiago). Anda dapat memastikan Anda menggunakan find yang tepat
/usr/bin
atau/bin
untuk memastikan perintah find ada di sana. Jika Anda bahkan tidak dapat melakukanman
padafind
, cobalah mengubah shell Anda baik/bin/ksh
atau/bin/bash
. Saya telah menemukan bahwa variabel lingkungan dan jalur dapat membingungkan sesekali.sumber
Seperti yang disebutkan orang lain, menggunakan path lengkap ke binary find dapat membantu. Mungkin ditemukan alias dengan flag tambahan di sistem Anda. Mengetik
\find
akan mencegah alias digunakan. Anda juga dapat menggunakanalias
untuk melihat alias perintah di sesi shell Anda saat ini.sumber
Saya melihat ini terjadi pada Mac ketika direktori berada pada media yang dapat dilepas yang telah dihapus dan dibaca sejak jendela terminal dibuka. Saya tidak bisa menjelaskan mengapa (mungkin ada hubungannya dengan informasi yang di-cache ketika sesi terminal dimulai), tetapi itu dapat direproduksi. Baru saja memulai kembali sesi terminal dan semuanya baik-baik saja.
sumber