#linux #bash #terminal #ls #wc
#linux #bash #терминал #ls #wc
Вопрос:
Есть ли способ отображать файлы аналогично ls -al
, который также показывал бы количество файлов в перечисленных каталогах? Что-то вроде ls -al
with ls -1 | wc -l
в качестве последнего столбца? Я пробовал переключать аргументы и в значительной степени отказался от канала, потому что я сталкиваюсь с синтаксическими ошибками всякий раз, когда я пытаюсь сильно манипулировать результатами. По отдельности они золотые, поэтому я чувствую, что упускаю что-то очевидное. Способ изменить, ls
чтобы он также показывал количество файлов в каталогах, которые он перечисляет, кажется, что так и должно быть, по крайней мере. Кто-нибудь знает способ заставить это работать?
Комментарии:
1. Нужно ли сохранять цвета?
2. Это выглядит великолепно! На самом деле меня не волнуют цвета, поскольку я могу настроить форматирование вручную. Эти два дают итоговые значения. Я могу использовать это для создания рекурсивной версии, чтобы показывать количество для каждого каталога. Спасибо! Это отлично работает!
Ответ №1:
Каталоги
ls -al | awk '/^d/{d }{print}END{print "Directories: "d}'
Все файлы
ls -al | awk '{print}END{print "Files:" NR}'
Ответ №2:
Я думаю, что что-то вроде этого было бы ближе к тому, что вы хотите
> mkdir testdir amp;amp; cd testdir amp;amp; touch a amp;amp; ln -s a b amp;amp; mkdir c amp;amp; touch c/{1..10}
> shopt -s dotglob; for i in *; do [[ -d $i ]] amp;amp; paste <(ls -ld "$i") <(find "$i" -mindepth 1 | wc -l) || ls -l "$i"; done
-rw-rw-r-- 1 user user 0 Jul 8 00:04 a
lrwxrwxrwx 1 user user 1 Jul 8 00:04 b -> a
drwxrwxr-x 2 user user 4096 Jul 8 00:04 c/ 10