ls
mencetak berbeda tergantung pada apakah output ke terminal atau ke yang lain.
misalnya:
$ ls .
file1 file2
$ ls . | head
file1
file2
Apakah ada cara untuk ls
mencetak pada satu baris seolah-olah ke terminal padahal tidak. Ada -C
argumen yang agak melakukan itu, tetapi itu akan membaginya menjadi beberapa baris.
$ ls
file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file3 file4 file5 file6 file7 file8 file9
$ ls -C . | head
file1 file11 file13 file15 file17 file19 file3 file5 file7 file9
file10 file12 file14 file16 file18 file2 file4 file6 file8
Alasan saya ingin melakukan ini adalah karena saya ingin memonitor file dalam direktori yang berubah dengan cepat. Saya telah membangun baris perintah sederhana ini:
while [[ true ]] ; do ls ; done | uniq
Uniq mencegahnya mengirim spam ke terminal saya dan hanya menampilkan perubahan. Namun itu mencetak semuanya pada garis differnet, yang membuat uniq tidak berguna, dan meningkatkan jumlah noise. Secara teori orang bisa menggunakan watch
ini, tapi saya ingin melihat file segera setelah itu muncul / menghilang.
Ini adalah solusi terakhir:
while [[ true ]] ; do ls | tr '\n' ' ' ; done | uniq
Jawaban:
saya tidak tahu tentang saklar yang bisa melakukan itu, tetapi Anda dapat menyalurkan output Anda
tr
untuk melakukannya:sumber
Ini bekerja untuk saya, ini adalah cara paling sederhana yang pernah saya temukan. Semoga ini bisa membantu Anda juga.
sumber
Jika Anda
ls
memiliki opsi ini, Anda dapat menggunakan nilai tinggi dan mungkin melakukan apa yang Anda inginkan:sumber
ah, sekarang Anda sudah memperbarui pertanyaan ....
akan melakukan apa yang Anda posting, hanya lebih sederhana.
Namun, Anda lebih baik menggunakan sesuatu yang menggunakan inotify untuk melakukan ini .. seperti
jika Anda tidak memberi tahu, maka sesuatu seperti ini juga berfungsi dengan baik:
sumber
Bagaimana dengan yang cukup sepele
? :-) Anda bahkan tidak perlu membayar untuk itu. :-)
sumber
Ini mungkin apa yang Anda cari, tetapi saya mungkin salah mengerti pertanyaan Anda, tetapi begini :)
Beberapa perintah patut dilihat:
tonton - jalankan program secara berkala, tampilkan output layar penuh xargs - bangun dan jalankan baris perintah dari input standar (-0 jika Anda ingin menangani file dengan spasi, dll)
Anda dapat melakukan sesuatu seperti berikut ini untuk menunjukkan 10 file / dir terakhir yang berubah dengan interval 2 detik (default untuk menonton)
opsi -lart memberitahu ls untuk menjadi verbose dan mengurutkan berdasarkan waktu modifikasi.
Jika Anda benar-benar hanya ingin file saya hanya akan melakukan sesuatu seperti:
atau hanya untuk menampilkannya:
sumber
Anda dapat menggunakan kutu kembali di shell untuk mencapai ini seperti:
sumber
touch ./-en
[a-d]
hal semacam itu sebelumnya. Jika Anda menjalankannya dalam skripecho -E
tidak akan terlalu merepotkan dan baris baru yang tertinggal mungkin tidak masalah.Ini bekerja untuk saya karena saya tidak hanya perlu mencetak hasil dalam satu baris tetapi juga saya perlu menentukan bagaimana itu harus dipisahkan dan Anda dapat menentukannya dengan ORS
sumber