LINUX.ORG.RU

Ищу более информативный md5sum


0

0

Нужна консольная прога, считающая md5sum, но делающая это более информативно. Поясню. При пересчете большого количества больших файлов хочется видеть, где конкретно мы сейчас находимся. Вывод (если идёт в файл) буферизируется и совсем не понятно, на каком месте мы сейчас.

Т.е. от md5sum хотелось бы видеть:
1. Прогресс выполнения для одного и всех файлов
2. Рекурсивную работу по вложенным каталогам

Есть такое или придётся писать?

★★★★★

> 2. Рекурсивную работу по вложенным каталогам

find /где/то/далеко -type f -print0 | xargs --null md5sum

Dselect ★★★
()
Ответ на: комментарий от Dselect

Красивый прогресс вида 0..100% по каждому файлу оно мне не покажет :)

AngryElf ★★★★★
() автор топика

без вывода прогресса по каждому файлу, но с выводом общего прогресса
-------------------------------------->8--------------------------------------
#/bin/sh

if [ "$#" != "2" ]; then
	echo "Usage: $0 source_dir output_hash_list"
	exit 1;
fi
TMP_FILELIST=/tmp/filelist.tmp
SOURCE_DIR=$1
OUTPUT_HASH_LIST=$2
if [ \! -d "$SOURCE_DIR" ]; then 
	echo "Error: Cannot stat $SOURCE_DIR"
	exit 1
fi
if [ \! -w "$TMP_FILELIST" ]; then
	echo "Error: Cannot write to temp file $TMP_FILELIST"
	exit 1
fi
echo "Generating list of files..."
find $SOURCE_DIR -type f > $TMP_FILELIST 2>/dev/null 
COUNT=`cat $TMP_FILELIST | wc -l`
touch "$OUTPUT_HASH_LIST" 2>/dev/null
if [ \! -w "$OUTPUT_HASH_LIST" ]; then
	echo "Error: Cannot write to output file $OUTPUT_HASH_LIST"
	exit 1
fi
echo "Hashing..."
awk -v C=$COUNT -v N=0 -v OUT="$OUTPUT_HASH_LIST" -f - $TMP_FILELIST <<EOP
{
	print N,"/",C;
	N++;
	system("md5sum '" \$0 "' >> " OUT)
}
EOP
rm -f $TMP_FILELIST
echo "Done"
--------------------------------------8<--------------------------------------

Nao ★★★★★
()
Ответ на: комментарий от anonymous

Ну эт опять скриптовать... Ладно, нет так нет...

AngryElf ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.