Dari halaman findutils
find
manual :
Jika tidak ada ekspresi yang diberikan, ekspresi -print
itu digunakan (tetapi Anda mungkin harus mempertimbangkan untuk menggunakannya -print0
sebagai gantinya).
( -print
adalah sebuah find
ekspresi.)
The dokumentasi POSIX menegaskan hal ini:
Jika tidak ada ekspresi , -cetak akan digunakan sebagai ekspresi.
Jadi find .
persis sama dengan find . -print
; yang pertama tidak memiliki ekspresi sehingga -print
ditambahkan secara internal.
Penjelasan tentang apa yang -print
muncul lebih jauh di halaman manual:
-print
Benar; cetak nama file lengkap pada output standar, diikuti oleh baris baru. Jika Anda mem-pipkan output find ke program lain dan ada kemungkinan samar bahwa file yang Anda cari mungkin mengandung baris baru, maka Anda sebaiknya mempertimbangkan dengan serius menggunakan -print0
opsi ini -print
. Lihat bagian FILENAMEN TIDAK Biasa untuk informasi tentang bagaimana karakter yang tidak biasa dalam nama file ditangani.
-print
adalah tindakan default . Beberapafind
predikat dianggap sebagai tindakan yang bertentangan dengan filter atau ketentuan . Misalnya,-type f
bukan tindakan.-exec
adalah suatu tindakan meskipun juga dapat digunakan sebagai suatu kondisi.Tindakan termasuk
-print
,-exec
dan-ok
. Beberapafind
implementasi memiliki predikat tindakan non-standar lainnya seperti-print0
,-printf
,-execdir
,-okdir
,-ls
...Di mana tidak ada tindakan yang
<some-predicates>
mengandung setara dengan:(perhatikan tanda kurung di atas yang penting jika ada beberapa
-o
operator).Jika ragu, yang terbaik adalah menggunakan
-print
secara eksplisit (atau-exec printf '%s\0' {} +
(atau-print0
jika tersedia) sehingga output dapat diproses setelahnya).Tindakan default
-print
ditentukan oleh POSIX. Beberapafind
implementasi lama memerlukan eksplisit-print
, tetapi biasanya tidak ditemukan di alam liar saat ini.Perhatikan juga bahwa beberapa
find
implementasi mengizinkan penghapusanfiles
, dalam hal ini mereka default untuk mencari ke direktori saat ini. Itu untuk mereka,setara dengan
Namun itu bukan standar, jadi sebaiknya dihindari.
Di ujung spektrum yang lebih bertele-tele (dan bermanfaat), beberapa
find
implementasi juga memungkinkan lewat jalur file sebagai argumen ke-f
opsi seperti pada:Mereka adalah satu-satunya
find
implementasi yang memungkinkan lewat jalur file sewenang-wenangfind
. Implementasi lain tidak dapat menerima jalur file seperti!
atau-print
... jadifind "$file" -print
(atau bahkanfind -- "$file" -print
) mengasumsikan$file
bukan namafind
predikat (atau opsi dalam kasus pertama).Sayangnya itu bukan standar atau portabel juga.
sumber
Mereka sama, mereka berdua menulis seluruh hierarki direktori dari direktori saat ini.
Dari dokumentasi menemukan POSIX :
sumber
Di Linux tidak ada perbedaan, tetapi sistem lain (seperti AIX misalnya) perlu
-print
jika Anda ingin output dari perintah ditampilkan di layar Anda.sumber
find
tidak membutuhkannya. AIX telah sesuai POSIX selama beberapa dekade.Selama bertahun-tahun perintah find tidak memiliki tindakan default. Kesalahan umum lupa menambahkan opsi -print ke perintah find Anda. Saya masih sampai hari ini mengetiknya karena kebiasaan.
Tetapi pada beberapa titik itu ditambahkan sebagai tindakan default jadi sekarang
find .
danfind . -print
setara.sumber
Kadang-kadang berguna untuk digunakan
-print
secara eksplisit ketika Anda melakukan tindakan lain sehingga nama file ditampilkan saat tindakan itu dilakukan.akan mirip dengan
dimana
-print
sesuai dengan-v
. Jika Anda tidak memasukkan-print
maka nama file tidak ditampilkan.Untuk membuat
rm
perintah lebih mirip, by the way, keluarkan perintah Bash ini terlebih dahuluyang akan membuat file
*
titik dot (tersembunyi).sumber