Вывести имена файлов и их размеры в байтах
Необходимо для указанной директории вывести все имена файлов и их размеры в байтах, упорядоченные по убыванию даты изменения.
Только имена файлов без их полного пути и точный размер этих файлов в байтах.
Можно ли дополнительно задать шаблон (маску) имени выводимых файлов, например, только файлы, содержащие слово "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!.*/!!'