shopt -s globstar
Naprawdę fajne jest szybkie interaktywne korzystanie z drzew katalogów, które nie są zbyt duże . Glob nie może odfiltrować katalogów na podstawie typu, ale jeśli go użyjesz, ls -d
po ls
prostu wydrukuje nazwę katalogu zamiast zawartości.
Zakładając, że twój ll
alias obejmuje -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
da ci taki wynik (z mojego katalogu code-golf), ale z podświetlaniem kolorów (więc łatwiej jest zobaczyć katalogi). Zauważ, że sortowanie według rozmiaru pliku miało miejsce w podkatalogach.
drwxr-xr-x 1 peter peter 70 Jun 8 07:56 casexchg
...
drwxr-xr-x 1 peter peter 342 Mar 13 18:47 parity-party
-rw-r--r-- 1 peter peter 387 Jul 29 2017 likely.cpp
-rw-r--r-- 1 peter peter 416 Aug 31 2017 true-binary.asm~
-rw-r--r-- 1 peter peter 447 Feb 23 20:14 weight-of-zero.asm
...
-rw-r--r-- 1 peter peter 6.4K Jun 1 2017 string-exponential.asm
-rwxr-xr-x 1 peter peter 6.7K Aug 31 2017 true-binary
-rwxr-xr-x 1 peter peter 6.8K Sep 17 2017 dizzy-integer
-rw-r--r-- 1 peter peter 7.5K Jul 24 2017 fibonacci/fibonacci-1G.v3-working-32b-stack-except-output.asm
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G~
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G
-rwxr-xr-x 1 peter peter 8.4K May 19 04:29 a.out
-rw-r--r-- 1 peter peter 8.9K Jul 25 2017 fibonacci/perf.python-xnor-2n
-rw-r--r-- 1 peter peter 9.5K Jul 26 2017 fibonacci/fibonacci-1G-performance.asm
-rwxr-xr-x 1 peter peter 9.6K Apr 12 23:25 empty-args
-rw-r--r-- 1 peter peter 9.7K Dec 18 17:00 bubblesort.asm
-rwxr-xr-x 1 peter peter 9.9K Feb 6 23:34 parity-party/a.out
-rw-r--r-- 1 peter peter 9.9K Jul 25 2017 fibonacci/fibonacci-1G-performance.asm~
...
Możesz odfiltrować katalogi, przepuszczając przez grep -v '^d'
Czasami możesz użyć globu, który pasuje tylko do plików, a nie do katalogów, jeśli twoje nazwy plików mają wzorzec. np. ll -rSd **/*.jpg
lub nawet **/*.*
działa, jeśli nie ma .
w nich żadnej z nazw katalogów i wszystkich plików, które chcesz zrobić .
(Dla osób z tłem DOS: *.*
w Uniksie nie ma nic magicznego . Po prostu pasuje do każdej pozycji katalogu, która zawiera dosłowną kropkę. Ale oprócz plików wykonywalnych i czasami plików tekstowych, często podaje się rozszerzenia nazw plików.)
@dessert wskazuje, że będziesz potrzebować shopt -s dotglob
, aby dopasować wszystkie pliki.
Z GNU find
Jeśli nie ma zbyt wielu plików, aby zmieściły się w jednym ls
wierszu poleceń, find -exec ls {} +
umieści je wszystkie w wierszu poleceń, gdzie ls
można je posortować.
find -not -type d -exec ls --color -lrSh {} +
Używanie -not -type d
zamiast -type f
unika ignorowania dowiązań symbolicznych, nazwanych potoków, gniazd, plików urządzeń i wszystkiego innego, co masz w swoich katalogach.
Z du
:
du -ach | sort -h
....
4.0K x86-modedetect-polyglot.o
8.0K ascii-compress-base.asm
8.0K dizzy-integer
8.0K stopwatch-rdtsc.asm
8.0K string-exponential.asm
8.0K true-binary
12K a.out
12K bubblesort.asm
12K casexchg
12K empty-args
100K parity-party
220K fibonacci
628K total
Teraz nazwy katalogów są sortowane na liście w celu zsumowania całej ich zawartości, ale pojedyncze pliki są nadal uwzględniane.
sort -h
, aka --human-numeric-sort
, sortuje liczby z przyrostkami rozmiaru, takimi jak du -h
odbitki. Jest idealny do użycia z du
.
Często używam du -sch * | sort -h
lub, */
aby uzyskać tylko katalogi.
du -sch **/* | sort -h
dałoby ci powyższy wynik, jeśli zapomnisz, że du
ma -a
opcję.
(Poświęciłem trochę czasu, by to sprawdzić, ponieważ zamieszczam odpowiedź. Do użytku interaktywnego prawdopodobnie bym właśnie użył du -sch **/*
.