Могу ли я получить «du», сгруппированный по месяцам?

У меня есть каталог с большим количеством фотографий. В частности, du -sh --apparent-size /path/to/myfolder дает мне 331G. Это здорово. Но теперь я хочу получить список, сгруппированный по месяцам, например, что-то вроде этого:

 2016-01 20MB 2016-02 520MB 2016-03 312MB ... 

Есть ли (разумный) способ сделать это с помощью встроенных linux, или я должен просто написать свою собственную утилиту Python для этого?

  • В чем разница между этими двумя наборами команд для настройки разрешений ACL?
  • копирование файлов из одного каталога в другой
  • Измените владельца файла, который я могу записать в
  • Один пользователь для совместного использования или нескольких пользователей
  • Использование crc32 для поиска поврежденных или поврежденных файлов
  • предотвратить изменение файла и / или метки времени файла
  • Как перечислять размеры файлов каталогов / файлов в целом в UNIX-подобных системах?
  • Выход команды LS в файл
  • One Solution collect form web for “Могу ли я получить «du», сгруппированный по месяцам?”

    В linux попробуйте:

     find /my/path -maxdepth 1 -type f -printf '%TY-%Tm %s\n' | awk '{b[$1]+=$2} END{for (date in b) print date, b[date]}' | sort 

    Как это работает

    • find /my/path

      Это ищет файлы в / my / path.

    • -maxdepth 1

      Это говорит о find не искать в подкаталогах. (Если вы хотите получить рекурсивный поиск, опустите эту опцию.)

    • -type f

      Это говорит о том, что поиск ограничивает поиск обычными файлами.

    • -printf '%TY-%Tm %s\n'

      Это говорит о find что распечатать год за месяц следует за размером в байтах для каждого файла.

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

    • b[$1]+=$2

      Для каждого найденного файла мы добавляем его байт-счет, найденный из столбца 2, в счетчик, который сочетает этот год-месяц в ассоциативном массиве b .

    • END{for (date in b) print date, b[date]}

      После того как мы обработаем весь вывод из find , мы распечатаем результаты.

    • sort

      Это сортирует результаты в порядке дат.

    Многострочная версия

    Для тех, кто предпочитает, чтобы их код распространялся по нескольким строкам:

     find /my/path -maxdepth 1 -type f -printf '%TY-%Tm %s\n' | awk ' { b[$1]+=$2 } END{ for (date in b) print date, b[date] } ' | sort 

    пример

    Рассмотрим каталог с этими файлами:

     $ ls -l total 27816 -rw------- 1 john1024 john1024 2459173 Nov 23 2015 img100.jpg -rw------- 1 john1024 john1024 3479750 Nov 23 2015 img101.jpg -rw------- 1 john1024 john1024 4028939 Nov 23 2015 img102.jpg -rw------- 1 john1024 john1024 2928519 Jul 30 18:55 img103.jpg -rw------- 1 john1024 john1024 2948294 Jul 30 18:55 img104.jpg -rw------- 1 john1024 john1024 3177583 Aug 1 16:56 img105.jpg -rw-rw---- 1 john1024 john1024 3111737 Apr 18 2016 img106.jpg -rw-rw---- 1 john1024 john1024 1441310 Apr 18 2016 img107.jpg -rw-rw---- 1 john1024 john1024 2430158 Apr 25 16:26 img108.jpg -rw-rw---- 1 john1024 john1024 2424504 Apr 25 16:26 img109.jpg 

    Вывод нашей команды:

     $ find . -maxdepth 1 -type f -printf '%TY-%Tm %s\n' | awk '{b[$1]+=$2} END{for (date in b) print date, b[date]}' | sort 2015-11 9967862 2016-04 9407709 2016-07 5876813 2016-08 3177583 

    Уточнения

    Если мы хотим получить результат в mebibytes (MiB) вместо байтов, мы можем преобразовать единицы следующим образом:

     $ find . -maxdepth 1 -type f -printf '%TY-%Tm %s\n' | awk '{b[$1]+=$2} END{for (date in b) print date, b[date]/1024**2, "MiB"}' | sort 2015-11 9.50609 MiB 2016-04 8.97189 MiB 2016-07 5.60457 MiB 2016-08 3.03038 MiB 

    Мы можем еще больше контролировать выходной формат, используя printf . Здесь, чтобы сохранить только одну цифру после десятичной точки, мы отформатируем размер с помощью %5.1f :

     $ find . -maxdepth 1 -type f -printf '%TY-%Tm %s\n' | awk '{b[$1]+=$2} END{for (date in b) printf "%s %5.1f MiB\n", date, b[date]/1024**2}' | sort 2015-11 9.5 MiB 2016-04 9.0 MiB 2016-07 5.6 MiB 2016-08 3.0 MiB 
    Interesting Posts

    RSync – Permission denied (13) при выполнении rsync в качестве корня

    странная проблема с 64-разрядной установкой и памятью

    Как проверить '.htaccess' из командной строки

    передавая переменные от 'ls' до 'tar' через 'xargs'

    Как запустить сценарии запуска на Amazon linux?

    Это процесс, который очищает себя от завершения или ядра?

    Монетный двор 17.3 Wi-Fi не работает после возобновления от приостановки

    Есть ли способ интегрировать «man-страницы» unix в приложение «Словарь OSX»?

    Как я могу получить вывод `ls -l` для ссылки рекурсивно, пока не достигнут исходный файл?

    Настройте локальную точку доступа Wi-Fi на компьютере

    Почему INotify не работает с `/ etc / mtab` или` / proc / mounts`?

    Сбой ядра Linux: как собрать информацию?

    Есть ли такая команда, как xwininfo, xdpyinfo, xprop или xlsclient, которые расскажут мне, какой шрифт использует X-клиентское окно?

    Как я могу получить результат и проверить команду dig?

    Исправить определение физического объема LVM после удаления / dev / sdb

    Linux и Unix - лучшая ОС в мире.