Bagaimana cara output ls -l
dimodifikasi ke bidang terpisah menggunakan tab bukan spasi? Saya ingin menempelkan output ke spreadsheet; padding dengan jumlah ruang variabel membuatnya sulit untuk melakukannya. Menggambarkan:
drwxr-xr-x 2 root root 4096 Sep 26 11:43 wpa_supplicant -rw-r ----- 1 dialout root 66 Sep 26 11:43 wvdial.conf drwxr-xr-x 9 root root 4096 8 Okt 08:21 X11 drwxr-xr-x 12 root root 4096 18 Februari 23:31 xdg drwxr-xr-x 2 root root 4096 31 Jan 06:11 xml drwxr-xr-x 2 root root 4096 22 Nov 07:26 xul-ext -rw-r - r-- 1 root root 349 Jan 13 2012 zsh_command_not_found
Dalam kutipan dari yang ls -l /etc
ditunjukkan di atas, baris 1, 2 dan 3 memiliki satu digit di kolom 2 sedangkan baris 4 memiliki dua. Itu berarti perataan dicapai dengan menggunakan dua spasi untuk memisahkan kolom 1 dan 2 di baris 1-3, tetapi hanya satu spasi di baris 4.
ls
dikatakan , parsing outputnya baik-baik saja. Itu jarang tujuannya. Bisa dibilang itu ada di sini. Saya pikir metode yang Anda gunakan cukup baik (metode apa pun akan menghasilkan hasil yang tidak diinginkan dengan sejumlah kebutuhan)! Namun, bisa dibilang parsingls
mungkin lebih baik. Pertimbangkan kasus nama file yang sebenarnya memiliki karakter tab di dalamnya.ls -l
mengganti tab dengan?
karakter. Script Anda mempertahankan karakter tab, yang akan membuat kolom tambahan jika hasilnya diartikan sebagai tab-delimeted dan digunakan untuk membuat spreadsheet. Ini rusak parah jika nama file memiliki baris baru.\n
atau\t
atas nama mereka. Jika mereka melakukannya, maka parsing outputls
dengan perintah bash sederhana akan lebih kompleks, tetapi dapat dicapai. Saya dapat memperbarui jawabannya, jika OP ingin menangani kasus seperti itu.\n
dan\t
atas nama mereka.printf "%s\t%s\t%s\t%s\r\n" $mod_month $mod_day $mod_time $file
dan untuk mengarahkan file ouptut sebagai./ls_tab.sh > listing.txt
.Mencoba:
Atau, jika nama file Anda memiliki spasi:
sumber
awk
. Pintar!$9
tidak mengubah fakta bahwa Andaawk
selalu menafsirkan spasi sebagai indikasi jeda antar kolom.$9
hanya menangkap kata pertama dalam posisi itu, dan karena kata-kata lain dianggap terpisah, kolom-kolom bernomor lebih tinggi, mereka tidak pernah dicetak sama sekali.Kami bahkan tidak perlu mengonversi output sebagai Tab Delimited. Ruang antar kolom cukup baik.
Menjalankan
ls -l
perintah di terminal seperti yang Anda biasanya lakukan dan menyalin isi yang ingin disisipkan dalam Spreadsheet a.Selanjutnya, buka program Spreadsheet Anda (LibreOffice Calc dalam kasus saya) dan tekan Ctrl+ Vuntuk menempelkan konten clipboard Anda.
Panduan Impor Teks akan muncul. Pastikan Anda meletakkan tanda centang di sebelah
Space
dan tekan Ok. Anda dapat menonton pratinjau di panel bawah.sumber
python bagus untuk ini:
sumber