Как Вычислить Общий размер файла, искавшего с помощью команды Find

По моему опыту, собственный драйвер Linux, что предложения Nvidia могут вызвать ужасные проблемы производительности с определенными картами (особенно более старые). Человек, который разрешил их проблему путем возвращения их драйвера к более старой версии, является хорошей демонстрацией проблем регрессии драйвера Nvidia.

Я рекомендовал бы пробовать драйвер Nvidia с открытым исходным кодом, известный как "nouveau". Это не всегда работает безупречно с менее - популярные карты (у меня были полные отказы загрузиться с неясными картами Nvidia как 7300GS), и afaik, это не может обработать 3D ускорение благодаря отсутствию Nvidia коммуникации, но в большинстве случаев это может быть великий исполнитель для нормального настольного использования.

Я не чрезвычайно знаком с упаковочной системой openSUSE, но необходимо будет, вероятно, удалить пакет Nvidia прежде, чем установить nouveau. В противном случае необходимо будет поместить в черный список модуль Nvidia (препятствуйте тому, чтобы он загрузился), путем добавления имени модуля к /etc/modprobe.d/blacklist.conf (в этом случае blacklist nvidia) и затем перезагрузка.

Можно проверить, какой модуль в настоящее время загружается в терминальном использовании lsmod | grep nvidia, или для nouveau lsmod | grep nouveau.

6
12.09.2016, 04:33
3 ответа

Некоторые версии find (невстроенный Linux, Cygwin, OSX, FreeBSD), позволяют Вам сравнивать время изменения файла со ссылочной датой с -newermt оператор.

find /storage/backup/rman -newermt '2012-12-01' ! -newermt '2013-01-01'

Вы не можете использовать -mtime сказать, был ли файл изменен в конкретную дату, потому что этот оператор относительно времени, которое Вы выполняете find команда. Если Ваш find не имеет -newermt оператор, создайте ссылочные файлы и используйте -newer оператор.

touch -t 201212010000 start
touch -t 201301010000 end
find /storage/backup/rman -newer start ! -newer end

Для получения общего размера файлов использовать du -c и сохраните только последнюю (“общую”) строку. Необходимо будет исключить каталоги, потому что при передаче каталога du, это складывает размеры всех файлов в соответствии с тем каталогом.

find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' -exec du -c {} + | tail -n 1

Если у Вас есть большое количество файлов, длина командной строки могла бы быть слишком большой, таким образом, find будет работать du многократно и команда выше только перечислила бы вывод от последнего пакета. В этом случае необходимо будет сложить суммы от каждого выполнения. Вот один способ сделать это.

find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' \
     -exec sh -c 'du "$@" | tail -n 1' _ {} + |
awk '{total += $1} END {print total}'

Осуществление: что случилось со следующей командой? (Т.е. в том, какая необычная но возможная ситуация это сообщит о неправильном числе?)

find /storage/backup/rman -type f -newermt '2012-12-01' ! -newermt '2013-01-01' \
     -exec du {} + |
awk '$2 == "total" {total += $1} END {print total}'
2
27.01.2020, 20:29

Сначала получите размер файла в байтах, затем подведите итог их:

sed 's/\s\+/+/g' <<<$(find /storage/backup/rman/ -mtime +90 -mtime -120 -exec stat -c "%s" {} \;) | bc

Править

Видеть файлы также,

du -chs $(find /storage/backup/rman/ -mtime +90 -mtime -120)

2
27.01.2020, 20:29
  • 1
    warl0ck, это это возможный также видеть файлы, потому что это только показывает размер в байтах и позже я вычислил размер, который составляет 51 ГБ. –  OmiPenguin 24.03.2013, 09:23
  • 2
    @UmairMustafa обеспечил альтернативный путь –  daisy 24.03.2013, 09:57
  • 3
    Все еще, он идет Файлы в ноябре...... Иначе это - большой –  OmiPenguin 24.03.2013, 10:23
  • 4
    @UmairMustafa, я не получаю то, что Вы имеете в виду –  daisy 24.03.2013, 10:30
  • 5
    На самом деле то, что я имею в виду, я только хочу файлы декабря и не ноября, Когда мы передаем-mtime +90-mtime-120 по некоторым причинам, он также возвращает Файлы в ноябре вдоль файлов в декабре. –  OmiPenguin 24.03.2013, 12:00

От https://stackoverflow.com/questions/64649/how-do-i-get-the-unix-find-command-to-print-out-the-file-size-with-the-file-name

find . -name '*.ear' -exec ls -lh {} \;

просто h дополнительное от ответа jer.drab.org. экономит время, преобразовывая в МБ мысленно.

Связанные ресурсы

1
27.01.2020, 20:29

Теги

Похожие вопросы