Как вычислить общий размер файла, который вы искали с помощью команды «Найти»

Сначала я должен искать файлы, используя команду FIND, которая будет показывать только файлы за декабрь 2012 г.

Во-вторых, мне нужно увидеть общий размер найденных файлов

Я использовал эту команду

find /storage/backup/rman/ -mtime +90 -mtime -120 -exec ls -lrth {} \; 

Но он также дал мне файлы ноября, которые я не хочу

 -rw-r--r-- 1 oraprod dba 8.7K Dec 1 22:40 /storage/backup/rman/full_011212.log -rw-r----- 1 oraprod dba 3.3G Dec 11 22:34 /storage/backup/rman/BKPPROD_aknskgvb.F_bkp -rw-r----- 1 oraprod dba 34M Dec 1 22:40 /storage/backup/rman/ctrl_011223 -rw-r----- 1 oraprod dba 1.3M Dec 1 22:33 /storage/backup/rman/BKPPROD_8lnrq765.F_bkp -rw-r--r-- 1 oraprod dba 8.0K Dec 20 22:45 /storage/backup/rman/full_201212.log -rw-r----- 1 oraprod dba 34M Dec 2 22:42 /storage/backup/rman/ctrl_021223 -rw-r----- 1 oraprod dba 2.5G Dec 11 22:38 /storage/backup/rman/BKPPROD_ajnskgvb.F_bkp -rw-r----- 1 oraprod dba 34M Dec 13 22:46 /storage/backup/rman/ctrl_131223 -rw-r--r-- 1 oraprod dba 8.0K Dec 17 22:44 /storage/backup/rman/full_171212.log -rw-r--r-- 1 oraprod dba 8.0K Dec 10 22:38 /storage/backup/rman/full_101212.log -rw-r--r-- 1 oraprod dba 8.0K Dec 13 22:46 /storage/backup/rman/full_131212.log -rw-r--r-- 1 oraprod dba 1.4K Nov 30 22:00 /storage/backup/rman/full_301112.log -rw-r----- 1 oraprod dba 34M Dec 8 22:46 /storage/backup/rman/ctrl_081223 -rw-r--r-- 1 oraprod dba 9.2K Dec 12 22:43 /storage/backup/rman/full_121212.log 

когда я du -ch в конце команды, это результат:

 8.0K ./.gnome/gnome-vfs 12K ./.gnome 24K ./lsat-0.9.7.1/changelog 920K ./lsat-0.9.7.1 8.0K ./.gconf/desktop/gnome/accessibility/keyboard 12K ./.gconf/desktop/gnome/accessibility 8.0K ./.gconf/desktop/gnome/peripherals/keyboard/host-mdfr-prod/0 12K ./.gconf/desktop/gnome/peripherals/keyboard/host-mdfr-prod 16K ./.gconf/desktop/gnome/peripherals/keyboard 20K ./.gconf/desktop/gnome/peripherals 36K ./.gconf/desktop/gnome 40K ./.gconf/desktop 8.0K ./.gconf/apps/panel/applets/clock/prefs 12K ./.gconf/apps/panel/applets/clock 8.0K ./.gconf/apps/panel/applets/workspace_switcher/prefs 12K ./.gconf/apps/panel/applets/workspace_switcher 8.0K ./.gconf/apps/panel/applets/window_list/prefs 12K ./.gconf/apps/panel/applets/window_list 40K ./.gconf/apps/panel/applets 44K ./.gconf/apps/panel 8.0K ./.gconf/apps/puplet 56K ./.gconf/apps 100K ./.gconf 8.0K ./.nautilus/metafiles 12K ./.nautilus 4.0K ./.eggcups 196K ./.gstreamer-0.10 4.0K ./.redhat/esc 8.0K ./.redhat 8.0K ./.gnome2/share/cursor-fonts 8.0K ./.gnome2/share/fonts 20K ./.gnome2/share 4.0K ./.gnome2/keyrings 4.0K ./.gnome2/accels 4.0K ./.gnome2/nautilus-scripts 36K ./.gnome2 12K ./.metacity/sessions 16K ./.metacity 4.0K ./.Trash 4.0K ./.gnome2_private 68K ./.gconfd 4.0K ./.mozilla/extensions 4.0K ./.mozilla/plugins 12K ./.mozilla 4.0K ./Desktop 2.5M . 2.5M total 

3 Solutions collect form web for “Как вычислить общий размер файла, который вы искали с помощью команды «Найти»”

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

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

Вы не можете использовать -mtime чтобы определить, был ли файл изменен в конкретную дату, потому что этот оператор относится к тому времени, когда вы запустили команду find . Если ваша -newermt не имеет оператора -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 будет запускаться несколько раз, а приведенная выше команда будет перечислять только вывод из последней партии. В этом случае вам нужно будет суммировать суммы от каждого прогона. Вот один из способов сделать это.

 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}' 

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

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)

Из 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 extra от ответа jer.drab.org. экономит время, превращаясь в MB умственно.

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

  • Прохождение результатов «находки» на зенит
  • Bash: вывод трубы «find» в «readarray»
  • как вывести вывод поиска в другой поиск
  • Использовать для цикла в find exec
  • Перемещение файлов старше одного года в родительский каталог архива
  • Поиск файлов на основе измененной даты (с указанием точного часа)
  • Сценарий очистки с помощью find и anacron
  • найти командную помощь
  • Используйте переменную оболочки для выполнения команды
  • `$ RANDOM` не является случайным в` `` `` `` `Exec``` `` `` `` `` `` `` `
  • find: отсутствующий аргумент для «-ok»
  • Linux и Unix - лучшая ОС в мире.