Ну, принятие Вас имеет stat
и bash
, можно получить размер файла с:
stat -c %s your_file
Если Вы хотите извлечь последнее $amount
байты для того файла с dd
, Вы могли:
dd if=your_file of=extracted_part \
bs=1 count=$amount \
skip=$(( $(stat -c %s your_file) - $amount ))
Но более нормальный подход должен был бы использовать tail
:
tail -c $(( 1024*1024 )) your_file > target_file
bash
альтернатива для ответа Stephane:
diff -u <(cd dir1 && du -a | sort -k2) <(cd dir2 && du -a | sort -k2)
И ответ этого и Stephane предполагает, что нет никаких новых строк в Ваших именах файлов.
С zsh
и vim
, Вы могли сделать:
vim -d =(cd dir1 && du -a | sort -k2) =(cd dir2 && du -a | sort -k2)
(можно заменить vim -d
с diff -u
или kompare
или Ваша предпочтительная текстовая утилита сравнения).
=(...)
форма замены команды совпадает с <(...)
один найденный в ksh, zsh и ударе за исключением того, что это использует временный файл вместо канала так, чтобы он мог работать с командами, которые ожидают регулярный файл (как vim
). Для команд, которые не имеют того ограничения (как diff
), можно использовать <(...)
вместо этого.
Каталог является просто отображением между именами файлов и inodes, в каталоге нет никаких "файлов". Можно попросить размер файлов, достижимых через каталог командой du(1)
). Если Вы волнуетесь по поводу размера самого каталога (как сообщается ls -ld directory
), это включает текущие имена файлов, расположите с интервалами, который использовался к настоящему времени стертые файлы, дополнение и различная бюрократия.
Если Вы хотите знать, имеют ли достижимые файлы те же имена/содержание, cmp(1)
сравнивает два файла. Или diff(1)
(с -r
флаг), сравнивает каталоги рекурсивно (он приспособлен в тексте, хотя).