Для быстрого интерактивного использования на деревьях каталогов, которые не слишком велики,shopt -s globstar
это действительно приятно. Глоб не может отфильтровывать каталоги по типу, но если вы используете его, ls -d
то ls
просто напечатает имя каталога, а не его содержимое.
Предполагая ваш ll
псевдоним включает в себя -lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
даст вам вывод, как это (из моего каталога code-golf), но с цветной подсветкой (так что каталоги легче увидеть). Обратите внимание, что сортировка по размеру файла происходила по подкаталогам.
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~
...
Вы можете отфильтровать каталоги, пропуская через grep -v '^d'
Иногда вы можете использовать глоб, который соответствует только файлам, а не каталогам, если ваши имена файлов имеют шаблон. Например ll -rSd **/*.jpg
, или даже **/*.*
работает, если ни одно из ваших имен каталогов нет .
в них, и все файлы, которые вы хотите сделать .
(Для людей с опытом работы в DOS: в этом нет ничего волшебного *.*
Unix . Он просто соответствует любой записи каталога, содержащей буквальную точку. Но кроме исполняемых файлов и иногда текстовых файлов, обычно дают расширения для имен файлов.)
@dessert указывает, что вам нужно, shopt -s dotglob
чтобы он соответствовал всем файлам.
С GNU find
Если в одной ls
командной строке не слишком много файлов , find -exec ls {} +
поместите их в командную строку, где их ls
можно отсортировать.
find -not -type d -exec ls --color -lrSh {} +
Использование -not -type d
вместо-type f
избегать игнорирования символических ссылок, именованных каналов, сокетов, файлов устройств и всего, что у вас есть в ваших каталогах.
С 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
Теперь имена каталогов сортируются в списке, чтобы суммировать все их содержимое, но отдельные файлы по-прежнему включены.
sort -h
, ака --human-numeric-sort
, сортирует числа с суффиксами размера какdu -h
печатные издания. Это идеально подходит для использования с du
.
Я часто использую du -sch * | sort -h
, или*/
чтобы получить только каталоги.
du -sch **/* | sort -h
даст вам вышеупомянутый вывод, если вы забудете, что du
есть -a
опция.
(Я только нашел время, чтобы найти его, потому что отправляю ответ. Для интерактивного использования я бы, наверное, просто использовал du -sch **/*
.