GNU/Linux >> Belajar Linux >  >> Linux

Linux temukan perintah - tunjukkan kemajuan

Solusi 1:

dengan trik ini Anda dapat melihat folder saat ini - tetapi tidak ada bilah kemajuan - maaf.

 watch readlink -f /proc/$(pidof find)/cwd

Solusi 2:

Utilitas kecil bernama pv (penampil pipa) mungkin Tolong. Dari ringkasan fantastis oleh Peteris Krumins:

Pipe viewer adalah alat berbasis terminal untuk memantau progres data melalui pipeline.

Anda dapat menggunakan pv dalam beberapa cara. Saat bermain-main di sini, saya meletakkannya segera setelah sebuah pipa untuk memantau kemajuan keluaran yang dihasilkan oleh find (harus meneruskan stdin ke stdout tidak tersentuh)

find / -mtime -1h | pv > /dev/null

yang akan menampilkan keluaran sedikit seperti ini:

6.42MB 0:01:25 [31.7kB/s] [         <=>      ]

(Saya mengalihkan stdout ke /dev/null sehingga saya dapat melihat bilah progres beraksi tanpa keluaran terbang. Ini mungkin bukan maksud Anda dengan menemukan, jadi sesuaikan dengan itu)

Sejujurnya saya tidak yakin seberapa baik ini bekerja di alam liar. Untuk penemuan "mahal" seperti di atas (melintasi dari root), tampaknya berfungsi dengan cukup baik. Untuk perintah yang lebih sederhana di simpul yang lebih dalam di pohon direktori, pv gagal total. Perintah ini segera memberikan hasil, jadi bilah progres mungkin diperdebatkan di sini.

Bagaimanapun, bermain-main dan lihat apakah ini berhasil untuk apa yang Anda butuhkan. Makanan untuk dipikirkan, setidaknya.

Solusi 3:

Saya mencari ini hari ini dan sampai di sini melalui Google. Saya sudah lama menemukan berjalan di OS X dan ternyata, watch tidak ada di sana. Jadi, inilah solusi lain:

lsof -Fn -a -c find -d cwd +r 10

  • lsof =daftar file yang terbuka
  • -Fn =cukup tampilkan nama file/direktori (diawali dengan karakter 'n', lewati ini jika Anda lebih suka lsof lengkap keluaran
  • -a =beri tahu lsof untuk hanya menampilkan garis yang cocok dengan semua kriteria (secara default menampilkan baris yang cocok dengan apa saja kriteria)
  • -c find =tampilkan file/direktori yang dibuka oleh proses bernama find (sebenarnya, proses yang namanya dimulai dengan find , tetapi peka huruf besar kecil jadi Finder tidak akan muncul)
  • -d cwd =tampilkan baris dengan FD (filedescriptor) cwd (direktori kerja saat ini)
  • +r 10 =tampilkan output setiap 10 detik hingga tidak ada file yang terbuka ditemukan (find selesai)

Ini akan menampilkan direktori find sedang diproses setiap 10 detik, jadi seharusnya memberikan gambaran jika find masih berfungsi dan seberapa jauh kemajuannya.

Solusi 4:

Ada contoh pencarian paralel dengan find di man find . Dengan menggunakannya, Anda dapat melakukan beberapa pemeriksaan untuk setiap item, melakukan beberapa tindakan tergantung pada kondisi mana yang berfungsi. Pemeriksaan pertama mungkin, misalnya, -print sederhana , jadi semua nama dicetak ke stdout. Pemeriksaan kedua akan melakukan apa yang Anda inginkan. Sesuatu seperti:

find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)

Jika pemeriksaan kedua juga harus menampilkan nama file, Anda dapat mengalihkan salah satunya ke stderr menggunakan -fprint /dev/stderr .

Solusi 5:

AFAIK, tidak, dan mengimplementasikannya akan menjadi hal yang tidak penting.

... Hmm. Mungkin skrip yang menjalankan find <target dir> -type d pertama, menyimpan daftar dan kemudian menggemakan setiap dir sebelum menjalankan find <list item> -maxdepth 1 <rest of find parameters> dalam perulangan for.

Perhatikan bahwa Anda memperdagangkan penurunan performa /signifikan/ dengan imbalan samar-samar dapat melihat apa yang dilakukannya.


Linux
  1. 25 contoh sederhana perintah find Linux

  2. temukan Contoh Perintah di Linux

  3. Keluaran perintah Linux sebagai parameter dari perintah lain

  1. Perintah mv Linux

  2. Linux du perintah

  3. Apa perintah untuk menemukan prioritas proses di Linux?

  1. Bagaimana Cara Menggunakan Perintah DD Show Progress di Linux?

  2. Perintah ip Linux

  3. Perintah cd Linux