Bir sıralamak Can ls adıyla listeleme?
Bir sıralamak Can ls adıyla listeleme?
Yanıtlar:
Ls, varsayılan olarak ada göre sıralar. Ne görüyorsun?
man ls
devletler:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
-c1
belirtilmezse sıralamaz : bunu yapmanın bir yolu var mı? ( --sort=name
işe yaramıyor gibi görünüyor)
ls -la
, görüyorum:, .bashrc - can - .config - Downloads - .local - tmp
sıralama adı şöyle olacaktır:.bashrc - .config - .local - Downloads - can - tmp
Basit bir şey için, ls'yi sort ile birleştirebilirsiniz . Dosya adlarının bir listesi için:
ls -1 | çeşit
Bunları ters sırada sıralamak için:
ls -1 | sırala -r
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; 2.10.15'ten 2.10.2'den önce görebileceğiniz gibi .
ls -1r
.
ls
from varsayılan olarak yerel ayara duyarlı bir sıralama coreutils
gerçekleştirir ve bu nedenle bazı durumlarda şaşırtıcı sonuçlar üretebilir (örneğin, arasında ve içinde sıralama yapar ). ASCIIbetical sıralama istiyorsanız, şunu kullanın:%foo
bar
quux
LANG=en_US
LANG=C ls
LANG
Sıralamayı etkilemek, bu yazı bana çok yardımcı oluyor!
?
bir terminal olduğunda her ascii olmayan karakter için çıktı (ls'den gelen kötü özellik, bir terminale çıktı verip vermediğini kontrol eder, borulama yaparken çalışır). Bunu "borulama" ile "düzeltebilir", C.UTF-8
yerel ayarı (sisteminiz destekliyorsa) ve / veya -b
bayrağı kullanabilirsiniz . Daha da iyisi, hiç kullanmayın ls
, daha iyi kullanın ``
ls
tirelerden önce kısa çizgileri sıralar.
* Nix araçlarının güzelliği, bunları birleştirebilmenizdir:
ls -l | sort -k9,9
Çıktısı ls -l
şöyle görünecek
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Böylece , sütunu dosya adları olarak 9,9
sütuna 9
kadar sıralayın 9
. Bu durumda aynı sütun olan nerede duracağınızı belirtmelisiniz. Sütunlar ile başlar 1
.
Ayrıca, büyük / küçük harfleri yok saymak istiyorsanız --ignore-case
, sıralama komutuna ekleyin .
-k9,9
geliyor?
9
aynı sütuna kadar sıralamak anlamına gelir 9
. Normal bir ls
çıktı şuna benzer: bu drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
nedenle sütun 9 dosya isimleridir. Vakayı yok saymak istiyorsanız, sırayla kullanın --ignore-case
.
DİKKAT: "a", "Z" SONRASI:
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
çözümleri burada deneyecek .
Yalnızca sayısal bir dizeyle farklı olan dosyalar, önünde bir ayırıcı olması koşuluyla bu numaraya göre sıralanabilir.
Bu durumda, aşağıdaki sözdizimi kullanılabilir:
ls -x1 file | sort -t'<char>' -n -k2
Misal:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
Man sayfasından (bash ls için):
-CftuSUX veya --sort'tan hiçbiri yoksa girişleri alfabetik olarak sıralayın.
which ls
olsa bile başarılı olursunuz . Bunun yerine, builtin ls
bash'ta yapın ve bir hata alın.
which
her zaman bir yol döndürür. type ls
Kabuğun ne düşündüğünü belirlemek için kullanın ls
(yerleşik, işlev, çalıştırılabilir).
Yardımcı ls
program, POSIX.1
şunları belirten IEEE Std 1003.1-2001 ( ) ile uyumlu olmalıdır :
22027: dizin ve dizin dışı işlenenleri, geçerli yerel ayardaki harmanlama sırasına göre ayrı ayrı sıralayacaktır.
26027: Varsayılan olarak, format belirtilmemiştir, ancak çıktı sembol adına göre alfabetik olarak sıralanacaktır :
- −A belirtilmişse kitaplık veya nesne adı
- Sembol adı
- Sembol türü
- Sembolün değeri
- Varsa, sembolle ilişkili boyut
.bashrc
Dosyanızı takma adlar için kontrol edin .
alias
Mevcut tüm takma adları kontrol etmek için sadece yazılabilir.
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 --