Mengapa titik dalam menemukan perintah?


14

Biasanya, orang melihat findperintah yang terlihat seperti ini:

$ find . -name foo.txt

ketika pencarian dimulai dari direktori saat ini. Saya menemukan bahwa di komputer saya (Ubuntu, Cygwin) saya mendapatkan hasil yang sama tanpa titik.

Mengapa biasanya disertakan? Apakah ini hanya sebuah konvensi untuk menjadi eksplisit, atau apakah itu diperlukan pada sistem tertentu?

Jawaban:


27

Beberapa versi * findmengharuskan Anda memberikan argumen jalur yang merupakan direktori untuk mulai mencari. Dot .hanya mewakili direktori saat ini biasanya di mana Anda ingin mencari.

Anda dapat mengganti ini dengan jalur apa pun yang Anda inginkan sebagai basis pencarian. Dalam beberapa versi find ini dapat dibiarkan karena direktori saat ini tersirat jika tidak ada argumen jalur.

Anda dapat menjalankan man finddi shell Anda untuk detail tentang argumen. Sebagai contoh, sinopsis penggunaan untuk tambang menunjukkan bahwa argumen jalur bersifat opsional (di dalam kotak paling kasar []):

   find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

Jika Anda menjalankan saya findtanpa argumen sama sekali, semua file dan direktori mulai dari folder saat ini akan dikembalikan. Contoh Anda hanya menyatakan secara eksplisit bahwa pencarian harus dimulai dari .dan memasukkan ekspresi -name foo.txtsebagai salah satu filter pencarian.

* Terutama semua varian BSD dan apa pun yang menempel ketat dengan standar POSIX . GNU find memungkinkannya menjadi opsional.


1
Apakah Anda tahu versi apa saja yang memerlukan ini? Atau di mana saya bisa mencari untuk menyelidiki lebih lanjut? (sulit untuk google)
Eric Wilson

Hal yang menarik tentang jalur pencarian default.
rozcietrzewiacz

2
Saya percaya sebagian besar BSD menemukan varian memerlukan argumen path sementara di GNU menemukan itu opsional. Variasi mungkin ada.
Caleb

2
Perhatikan bahwa dalam setidaknya spesifikasi standar 2008 POSIX, pathadalah argumen yang diperlukan untuk menemukan .
Caleb

1
Nit pick: "Anda bisa mengganti [titik] ini dengan jalur apa pun yang Anda inginkan" → " jalur apa pun yang Anda inginkan", karena Anda dapat mengatakannya find dir1 dir2 dir3 -name foo.txt.
G-Man Mengatakan 'Reinstate Monica'

5

Versi AIX find misalnya, memerlukan jalur dan tidak akan berjalan jika tidak ada yang disediakan.

# oslevel -s
5300-08-03-0831
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

# oslevel -s
6100-03-01-0921
# find -name bob
Usage: find [-H | -L] Path-list [Expression-list]

Meskipun beberapa mesin AIX mungkin memiliki GNU ditemukan diinstal, yang dapat mengatasi tanpa jalan,

# oslevel -s
6100-03-01-0921
# /opt/freeware/bin/find -version
GNU find version 4.1
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.