Katakanlah ketika saya melakukan perintah output adalah:
file1 file2 file3 file4
Apakah mungkin untuk menampilkan hanya kolom output tertentu, dalam hal ini file2? Saya telah mencoba yang berikut ini tanpa hasil:
echo ls | $2
Pada dasarnya yang ingin saya lakukan hanyalah menggemakan kolom kedua, dalam hal ini, saya ingin menggema:
file2
ls
keluaran?ls
dan setelah membuat beberapa file / folder mungkin tidak lagi seperti yang Anda inginkan. Seperti yang ditunjukkan terdon di sana, pasti ada cara yang lebih baik untuk mendapatkan yang Anda inginkanJawaban:
Perintah berikut akan memformat output ls menjadi satu kolom
sumber
ls -1 /directory | head -2 | tail -1
atauls -1 /directory | perl -ne 'print if $. == 2'
ls | sed -n '1p;q'
tampaknya lebih sederhanaAnda sedang mencari ini:
Namun, dengan asumsi Anda akan mencoba dan menggunakan nama file ini nanti, jangan lakukan ini, karena akan merusak nama file yang mengandung spasi. Sebagai gantinya, letakkan file ke dalam array, dan dapatkan yang kedua, yang menghindari keharusan melakukan parsing sama sekali:
Urutan pengembalian file tergantung pada nilai
LC_COLLATE
. Dengan demikian, Anda mungkin ingin mengaturLC_COLLATE=C
terlebih dahulu, jika Anda menginginkan pengurutan "standar" di semua kotak sudut.sumber
1
shell yang masuk akal (zsh, yash, fish, csh, tcsh, rc, es ...) dan di0
dalam ksh dan bash. Untuk solusi portabel untuk semua cangkang mirip Bourne, Anda dapat menggunakan:set -- *; printf '%s\n' "$2"
sebagai gantinya.Anda perlu menambahkan
-C
karenals
menggunakan mode satu kolom ketika output bukan terminal.awk
lalu cetak kolom kedua:sumber
Saya pikir Anda sedang mencari
Itu tidak akan menampilkan izin, pemilik, grup, tanggal, ukuran ... tetapi nama file sederhana dalam satu kolom.
sumber
Satu-satunya cara bekerja bagi saya adalah menambahkan "-semua". Itu adalah:
Karena
-all
menambahkan lebih banyak kolom seperti pengguna, izin, dll.sumber
Seperti yang telah disebutkan - menggunakan kolom untuk parsing
ls
output tidak terlalu kuat karenals
memecah garis sesuai dengan panjang nama file dan lebar terminal. Meskipun sering menarik untuk menampilkan satu kolom dari daftar elemen. Anda dapat melakukan ini menggunakan perintah cut:akan ditampilkan
Catatan yang
-d
memungkinkan Anda untuk memilih pembatas kolom, jadi misalnya denganAnda dapat menampilkan kolom kedua dari daftar yang dipisahkan koma.
sumber
Misalkan jika Anda ingin menampilkan hanya nama file tertentu di bawah jalur saat ini, gunakan perintah di bawah ini
perintah:
sumber
Ini rumit, karena parsing
ls -C
tergantung pada:ls -C
)ls -C
output berbentuk kolom, tetapi dapat dikonfigurasikan ke berbagai jumlah ruang sebagai pemisah bidang.ls
opsi tampilan tertentu yang dipilih).Untuk saat ini, mari kita mulai dengan masalah yang lebih mudah, ( yaitu tidak # 4 di atas), seandainya tidak ada spasi putih di nama file . Untuk mencetak kolom # 2, ini berfungsi:
Buka gulungan itu:
COLUMNS=$COLUMNS
menjamin bahwa panjang kolom yang dimasukkan|
tetap konsisten dengan tampilan terminal saat ini. Mengubah ini ke nilai sewenang-wenang juga berfungsi, sehinggaCOLUMNS=50
atauCOLUMNS=70
akan menyebabkanls -C
untuk mengatur ulang hal-hal sesuai dengan lebar itu.Metode lain adalah dengan menggunakan
-w
saklar, misalnya :tr
membuat pemisah bidang konsisten: satu tab di antara setiap kolom.cut
menampilkan kolom yang diinginkan.sumber
ubah jumlah karakter (54) sesuai kebutuhan sehingga Anda hanya mendapatkan data yang Anda inginkan.
sumber
54-
sayatan untuk setiap karakter mulai dari posisi 54; itu tidak berhenti di kolom "yang dikenal manusia"