Вывести имена файлов и их размеры в байтах

Необходимо для указанной директории вывести все имена файлов и их размеры в байтах, упорядоченные по убыванию даты изменения.

Только имена файлов без их полного пути и точный размер этих файлов в байтах.

Можно ли дополнительно задать шаблон (маску) имени выводимых файлов, например, только файлы, содержащие слово "file"?

Пример:

file3.txt 25345634
file2.txt 342345
file1.txt 2345234

Ответы (2 шт):

Автор решения: Solt

Например так:

find . -maxdepth 1 -name "file*" -type f -printf "%T@ %f %s\n" | sort -nr | cut -d' ' -f2-
  • . - поиск от текущей папки
  • -maxdepth 1 - глубина вложенности
  • -name "file*" - поиск по маске
  • -type f - только файлы
  • -printf "%T@ %f %s\n" - вывод по формату:
    • %T@ время последней модификации в секундах от первого января 1970 г. включая дробную часть через точку;
    • %f непосредственно имя файла без родительских директорий;
    • %s размер в байтах
  • sort -nr - числовая сортировка по убыванию
  • cut -d' ' -f2- - вывод полей по разделителю ' ' от второго и далее
→ Ссылка
Автор решения: eri
ls -1 -r -t *deb | xargs stat --printf='%n\t%s\n'

ls делает сортировку и выбирает маску.

stat печатает имя файла и размер.

xargs для передачи строк из ls в параметр для stat.

Исключим каталоги и путь к файлу

ls -1 -r -t -p -d file* | grep -v -e /$ | xargs -I '%p' stat --printf='%n\t%s\n' '%p' | sed 's!.*/!!'
→ Ссылка