Bagaimana cara menghilangkan kesalahan saat menjalankan perintah find di Linux?

3

Saya menggunakan perintah berikut untuk daftar 20 file besar dalam direktori. Namun seiring dengan daftar file, itu juga menunjukkan pesan kesalahan, seperti izin ditolak . Saya mencoba menambahkan 2> /dev/nulltetapi sepertinya tidak menyukainya.

Ini adalah perintah yang saya gunakan

find . -type f -printf "%s %p\n" | sort -nr | head -n 20

Bolehkah saya tahu cara menghindari semua pesan kesalahan dan hanya menampilkan daftar file?

pengguna196833
sumber

Jawaban:

3

Dalam bash, 2> /dev/nullsebenarnya akan berfungsi, selama Anda menambahkannya sebagai bagian dari perintah find itu sendiri, yaitu sebelum pipa.

Misalnya, ini akan berhasil:

find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20

Dengan tcsh, tidak ada cara langsung untuk melakukan hal yang sama, tetapi man tcsh menyebutkan solusi:

Shell saat ini tidak dapat mengarahkan output diagnostik tanpa juga mengarahkan output standar, tetapi ' (command> output-file)> & error-file ' sering merupakan solusi yang dapat diterima. Entah output-file atau kesalahan-file yang mungkin '/ dev / tty' untuk mengirim output ke terminal.

Untuk perintah find plain, ini memberi:

(find > /dev/tty) >& /dev/null

Saat menggunakan pipa, berbeda dengan bash, Anda harus menempatkan > /dev/ttysetelah pipa terakhir untuk menghindari pengalihan output ambigu. pesan eror.

Ini akan bekerja di tcsh:

(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null
Dennis
sumber
Dengan saran Anda, saya mendapatkan kesalahan berikut - Pengalihan output yang ambigu.
user196833
Saya mencoba temuan ini. -type f -printf "% s% p \ n" 2> / dev / null | sort -nr | head -n 20 tetapi mengeluarkan error - Ambiguous output redirect
user196833
1
Saya pikir ini karena saya menggunakan tcsh dan bukan bash.
user196833
Saya telah menginstal tcsh dan saya menemukan cara.
Dennis
Jadi untuk menampilkan ke file:(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > file.txt) >& /dev/null
Umber Ferrule