Jika tidak diurutkan berdasarkan nama tanpa argumen apa pun, Anda mungkin ingin memeriksa apakah ls telah alias ke sesuatu yang lain, atau cukup panggil menggunakan jalur lengkap yang akan menghilangkan alias apa pun yang ada.
tvanfosson
gnu-coreutils ls mengurutkan secara default. Sistem apa yang Anda gunakan (seperti yang ditanyakan orang lain)
Nick Fortescue
Apakah Anda yakin meminta untuk mengurutkan berdasarkan nama dan bukan berdasarkan jenis (mis. Direktori terlebih dahulu kemudian file) ??
Curtisk
Huruf besar muncul sebelum huruf kecil, jadi file Z muncul sebelum file a ... bagaimana cara memperbaikinya?
ArtOfWarfare
halaman manual mengatakan 'diurutkan secara terpisah dan dalam urutan leksikografis'. File diurutkan menurut karakter pertama: numerik [0..9] dan karakter UPPER [A..Z] dan karakter lowe [a..z]
Gürol Canbek
Jawaban:
131
Ls saya mengurutkan berdasarkan nama secara default. Apa yang kamu lihat?
man ls menyatakan:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.:
Apakah ada cara untuk mengurutkan file seperti ini: ls | sort -n1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Seperti yang Anda lihat 2.10.15 sebelum 2.10.2 .
BBK
Saya melakukan beberapa pengembangan android pada perangkat Pidion, dan ls tidak otomatis menyortir, jadi ini sangat membantu! Satu-satunya masalah adalah sepertinya itu memilah tautan lunak tetapi tidak menyortir file, karena alasan tertentu
Mitch
Di Mac, sepertinya perintah kedua itu bisa disingkat menjadi ls -1r .
Ash Ryan Arnwine
4
@BBK sort -V akan mengurutkan berdasarkan nomor versi, sehingga Anda mendapatkan .. 2.10.2; 2.10.15; .. from man sort .. --sort = WORD akan mengurutkan menurut WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
mosh
35
lsdari coreutilsmelakukan sadar-lokal pengurutan secara default, dan dengan demikian dapat menghasilkan hasil yang mengejutkan dalam beberapa kasus (misalnya, %fooakan mengurutkan antara bardan quuxdalam LANG=en_US). Jika Anda menginginkan jenis ASCIIbetical, gunakan
LANGJika perilaku semacam itu, posting ini banyak membantu saya!
yurenchen
Ini juga berhasil untuk saya. Bisakah Anda menjelaskan hal ini? Mengapa ini diurutkan secara berbeda?
Kostas
1
Dosis ini berfungsi, tetapi keluaran ?untuk setiap karakter non-ascii ketika keluarannya adalah terminal (fitur buruk dari ls lakukan periksa apakah itu keluaran ke terminal, berfungsi saat pemipaan). Anda dapat "memperbaiki" ini dengan piping to cat, menggunakan C.UTF-8lokal (jika sistem Anda mendukungnya) dan / atau menggunakan -bflag. Bahkan lebih baik, jangan gunakan lssama sekali, lebih baik gunakan `
12431234123412341234123
Ini membantu saya menemukan bahwa bagi saya, masalahnya adalah bahwa beberapa nama file saya berisi tanda hubung (-), dan beberapa tanda hubung en (-). lsmengurutkan tanda hubung sebelum tanda hubung en.
Jamy Mahabier
17
Keindahan alat * nix adalah Anda dapat menggabungkannya:
ls -l | sort -k9,9
Outputnya ls -lakan terlihat seperti ini
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Jadi dengan 9,9Anda mengurutkan kolom 9ke kolom 9, menjadi nama file. Anda harus memberikan tempat berhenti, yang merupakan kolom yang sama dalam kasus ini. Kolom dimulai dengan 1.
Juga, jika Anda ingin mengabaikan huruf besar / kecil, tambahkan --ignore-caseke perintah sortir.
Mengetahui, itu berarti mengurutkan kolom 9ke kolom yang sama 9. lsKeluaran normal terlihat seperti ini drwx------ 8 999 user 4.0K Feb 5 2017 file.txt:, jadi kolom 9 adalah nama file. Jika Anda ingin mengabaikan case, gunakan --ignore-caseon sort.
Ini tidak selalu benar. Saya tidak tahu persis keadaan yang membuat ini tidak benar, tetapi pada mesin saya yang menjalankan Ubuntu 12.04, output ls diurutkan menurut abjad (mengabaikan case).
Patrick James McDougle
Tangkapan yang bagus! Sepertinya memesan berdasarkan kode ASCII .. Huruf besar diikuti dengan huruf kecil ..
Kent Pawar
1
Saya perhatikan bahwa MacOS saya mengurutkan angka pertama, lalu huruf besar, lalu garis bawah dan kemudian huruf kecil. Lucu bahwa mereka tidak peka huruf besar / kecil. Di sisi lain, Debian saya peka huruf besar / kecil tetapi tidak menyortir huruf-huruf kecuali ada seri, maka huruf kecil menang! Contoh: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82
Saya menggunakan MAC juga. saya kecewa melihat penyortiran tipe A, Z, a, z. Saya di sini karena saya lebih suka A, a, Z, a. terima kasih atas tip Anda. akan mencoba normalsolusi di sini.
nyxee
8
File yang berbeda hanya dengan string numerik dapat diurutkan pada nomor ini dengan syarat diawali dengan pemisah.
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --
Jawaban:
Ls saya mengurutkan berdasarkan nama secara default. Apa yang kamu lihat?
man ls
menyatakan:List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:sumber
ls
tidak menyortir jika-c1
ditentukan: apakah ada cara untuk melakukannya? (--sort=name
sepertinya tidak bekerja)ls -la
, saya melihat.bashrc - can - .config - Downloads - .local - tmp
.bashrc - .config - .local - Downloads - can - tmp
Untuk sesuatu yang sederhana, Anda dapat menggabungkan ls dengan sort . Untuk hanya daftar nama file:
ls -1 | menyortir
Untuk mengurutkannya dalam urutan terbalik:
ls -1 | sort -r
sumber
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Seperti yang Anda lihat 2.10.15 sebelum 2.10.2 .ls -1r
.ls
daricoreutils
melakukan sadar-lokal pengurutan secara default, dan dengan demikian dapat menghasilkan hasil yang mengejutkan dalam beberapa kasus (misalnya,%foo
akan mengurutkan antarabar
danquux
dalamLANG=en_US
). Jika Anda menginginkan jenis ASCIIbetical, gunakansumber
LANG
Jika perilaku semacam itu, posting ini banyak membantu saya!?
untuk setiap karakter non-ascii ketika keluarannya adalah terminal (fitur buruk dari ls lakukan periksa apakah itu keluaran ke terminal, berfungsi saat pemipaan). Anda dapat "memperbaiki" ini dengan piping to cat, menggunakanC.UTF-8
lokal (jika sistem Anda mendukungnya) dan / atau menggunakan-b
flag. Bahkan lebih baik, jangan gunakanls
sama sekali, lebih baik gunakan `ls
mengurutkan tanda hubung sebelum tanda hubung en.Keindahan alat * nix adalah Anda dapat menggabungkannya:
Outputnya
ls -l
akan terlihat seperti iniJadi dengan
9,9
Anda mengurutkan kolom9
ke kolom9
, menjadi nama file. Anda harus memberikan tempat berhenti, yang merupakan kolom yang sama dalam kasus ini. Kolom dimulai dengan1
.Juga, jika Anda ingin mengabaikan huruf besar / kecil, tambahkan
--ignore-case
ke perintah sortir.sumber
-k9,9
maksudnya9
ke kolom yang sama9
.ls
Keluaran normal terlihat seperti inidrwx------ 8 999 user 4.0K Feb 5 2017 file.txt
:, jadi kolom 9 adalah nama file. Jika Anda ingin mengabaikan case, gunakan--ignore-case
on sort.PEMBERITAHUAN: "a" muncul SETELAH "Z":
$ sentuh A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
sumber
normal
solusi di sini.File yang berbeda hanya dengan string numerik dapat diurutkan pada nomor ini dengan syarat diawali dengan pemisah.
Dalam kasus ini, sintaks berikut dapat digunakan:
Contoh:
sumber
Dari halaman manual (untuk bash ls):
sumber
which ls
akan berhasil bahkan jika bash memiliki builtin ls. Sebaliknya, lakukanbuiltin ls
di bash, dan dapatkan error.which
selalu mengembalikan jalur. Gunakantype ls
untuk menentukan apa yang dipikirkan shellls
(bawaan, fungsi, dapat dieksekusi).The
ls
utilitas harus sesuai dengan IEEE Std 1.003,1-2.001 (POSIX.1
) yang menyatakan:sumber
Periksa
.bashrc
file Anda untuk mencari alias.sumber
alias
untuk memeriksa semua alias saat ini.ls -X berfungsi untuk tujuan itu, jika Anda memiliki alias ls ke default yang lebih berguna.
sumber
sumber