Bahkan ketika /tmp
tidak ada file yang dipanggil something
, mencarinya dengan find
akan mengembalikan 0:
$ find /tmp -name something
$ echo $?
0
Bagaimana saya bisa mendapatkan status keluar non-nol ketika find
tidak menemukan apa pun?
*
padaegrep
regex sepenuhnya mubazir. Karena Anda tidak menggunakanegrep
sintaks ekspresi reguler, plain oldgrep
mungkin beberapa mikrodetik lebih cepat.find ... | read
Solusi paling sederhana yang tidak mencetak, tetapi keluar 0 ketika hasil ditemukan
sumber
Keluar 0 mudah dengan menemukan, keluar> 0 lebih sulit karena biasanya hanya terjadi dengan kesalahan. Namun kita dapat mewujudkannya:
sumber
find
sepertinya tidak tergantung pada kode keluar dari apa pun-exec
itu berlari.exec
bagian ini, tidak di bawah nilai balik). Itu tidak dapat membedakan antara tidak ada yang ditemukan dan menemukan dirinya kesalahan keluar (misalnya ketika itu dipanggil pada titik awal yang tidak ada).Baru saja menemukan pertanyaan ini ketika mencoba menemukan cara saya untuk memecahkan masalah dengan Wayang (ubah izin pada folder di bawah direktori tetapi tidak pada direktori itu sendiri), ini sepertinya berfungsi:
Kasus penggunaan spesifik saya adalah ini:
Yang akan keluar dari kode 1 jika perintah find tidak menemukan file dengan izin yang diperlukan.
sumber
Itu tidak mungkin. Temukan pengembalian 0 jika berhasil keluar, bahkan jika itu tidak menemukan file (yang merupakan hasil yang benar tidak menunjukkan kesalahan ketika file memang tidak ada).
Mengutip halaman manual find
Bergantung pada apa yang ingin Anda capai, Anda bisa mencoba mencari
-print
nama file dan menguji outputnya:sumber
exec
/execdir
(digunakan dengan+
):If any invocation returns a non-zero value as exit status, then find returns a non-zero exit status.
Saya merasa bahwa ini adalah metode yang paling ringkas dan langsung:
sumber
-print -quit
menghapusnya, yang mungkin menjawab kekhawatiran Anda.Ini skrip kecil yang saya panggil
test.py
. Ini meningkatkan metode lain yang diposting di itu akan mengembalikan kode kesalahan jika ada yang diatur, dan itu juga menetapkan jika ditemukan tidak mencantumkan file:Inilah output baris perintah:
Kemudian, untuk hasil di mana ditemukan memiliki kesalahan tetapi menemukan file:
Kemudian, jika Anda ingin daftar file Anda dapat menggunakan
-print 0
diteruskan kefind
dan membagi variabel keluar pada nol, atau Anda bisa menambahkan pernyataan cetak untuk itu.sumber
Bukan hanya
find
itu mengembalikan kode status keluar sebagai nol ketika berhasil. Dalam unix apa pun perintah yang Anda jalankan, jika berhasil maka mengembalikan status keluar sebagai nol.sumber