Прочитать все файлы в папке и подпапках – прогресс и размер

У меня есть команда:

time find . -type f -print -exec cp {} /dev/null \; 

Эта команда находит все файлы в текущей папке и подпапках, печатает имя каждого файла и копирует каждый из них в / dev / null. В конце он показывает, сколько времени потребовалось, чтобы скопировать все файлы.

То, что мне нужно, – подсчитать (показать) все скопированные байты в конце (так что я мог бы вычислить скорость чтения // кэш не имеет значения //) и / или показать размер каждого файла рядом с его именем.

Если бы была возможность показать прогресс для каждого файла (pv) – это было бы здорово!

Для этого я использую Cygwin и оболочку bash, но скрипт также должен работать на реальных Linux-системах.

EDIT: Идея состоит в том, чтобы читать файлы, а не копировать их (rsync).

2 Solutions collect form web for “Прочитать все файлы в папке и подпапках – прогресс и размер”

Не уверен, что я полностью понимаю ваш вопрос, но как насчет:

 find . -type f -exec pv -N {} {} \; > /dev/null 

Дает вывод, например:

  ./file1: 575kB 0:00:00 [1.71GB/s] [=======================>] 100% ./file2: 15.2GB 0:00:07 [2.22GB/s] [==> ] 15% ETA 0:00:38 

Вместо этого используйте cp и find для этой задачи, вы можете подумать об использовании rsync .

пример

 $ time rsync -avvz -O --stats --checksum --human-readable \ --acls --itemize-changes --progress \ --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \ "<fromDir>" "<toDir>" | tee /path/to/log.txt 

пример

Это создаст отчет, который выглядит так.

команда

 $ time rsync -avvz -O --stats --checksum --human-readable --acls --itemize-changes --progress --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' "How_to_Write_Shared_Libraries" "/home/saml/newdir/." | tee ~/rsync.txt 

сведения о каждом переданном файле

 sending incremental file list delta-transmission disabled for local transfer or --whole-file [2014/05/31 15:12:34] [cd+++++++++] (Last Modified: 2014/02/21-15:42:44) (bytes: 4096 ) How_to_Write_Shared_Libraries/ [2014/05/31 15:12:34] [>f+++++++++] (Last Modified: 2013/12/06-19:59:22) (bytes: 766590 ) How_to_Write_Shared_Libraries/dsohowto.pdf 766.59K 100% 20.00MB/s 0:00:00 (xfer#1, to-check=1/3) [2014/05/31 15:12:34] [>f+++++++++] (Last Modified: 2014/02/21-15:42:44) (bytes: 44 ) How_to_Write_Shared_Libraries/url.txt 44 100% 1.23kB/s 0:00:00 (xfer#2, to-check=0/3) total: matches=0 hash_hits=0 false_alarms=0 data=766634 

статистика о передаче в целом

 rsync[5923] (sender) heap statistics: arena: 1073152 (bytes from sbrk) ordblks: 5 (chunks not in use) smblks: 1 hblks: 2 (chunks from mmap) hblkhd: 401408 (bytes from mmap) allmem: 1474560 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 96 uordblks: 410512 (bytes used) fordblks: 662640 (bytes free) keepcost: 396928 (bytes in releasable chunk) rsync[5926] (server receiver) heap statistics: arena: 286720 (bytes from sbrk) ordblks: 2 (chunks not in use) smblks: 5 hblks: 3 (chunks from mmap) hblkhd: 667648 (bytes from mmap) allmem: 954368 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 384 uordblks: 180208 (bytes used) fordblks: 106512 (bytes free) keepcost: 102336 (bytes in releasable chunk) rsync[5925] (server generator) heap statistics: arena: 135168 (bytes from sbrk) ordblks: 2 (chunks not in use) smblks: 6 hblks: 2 (chunks from mmap) hblkhd: 401408 (bytes from mmap) allmem: 536576 (bytes from sbrk + mmap) usmblks: 0 fsmblks: 464 uordblks: 88688 (bytes used) fordblks: 46480 (bytes free) keepcost: 32800 (bytes in releasable chunk) 

итоговая статистика перевода

 Number of files: 3 Number of files transferred: 2 Total file size: 766.63K bytes Total transferred file size: 766.63K bytes Literal data: 766.63K bytes Matched data: 0 bytes File list size: 143 File list generation time: 0.001 seconds File list transfer time: 0.000 seconds Total bytes sent: 667.27K Total bytes received: 54 sent 667.27K bytes received 54 bytes 1.33M bytes/sec total size is 766.63K speedup is 1.15 

времени, которое потребовалось

 real 0m0.092s user 0m0.053s sys 0m0.008s 
  • Отдельные файлы ZIP для папок - Исключая несколько
  • Как я могу запустить скрипт, когда интернет-соединение вот-вот потеряется?
  • Регулярное совпадение в ksh
  • Как сделать «если нет» в Bash без теста?
  • Тестирование файлов, содержащих определенные номера в его именах
  • прочитайте клавиатуру во время чтения
  • Как заставить sed выполнять действия только в первом матче?
  • Как подождать файл в сценарии оболочки?
  • Внутри скрипта bash, выполняющего ssh, автоматически добавьте хост только для определенных известных ключей RSA
  • Bash не ищет источник ~ / .bash_profile в OSX
  • Я хочу поймать STDERR и STDOUT сценария с фоновым запуском
  • Linux и Unix - лучшая ОС в мире.