У мене є кілька файлів розміром> 1 Гб кожен. Мені потрібно видалити останні файли з байтів. Як я можу це зробити? Я вважаю за краще редагувати файл на місці, щоб заощадити місце на диску.
Я на HP-UX.
У мене є кілька файлів розміром> 1 Гб кожен. Мені потрібно видалити останні файли з байтів. Як я можу це зробити? Я вважаю за краще редагувати файл на місці, щоб заощадити місце на диску.
Я на HP-UX.
Відповіді:
Спробуйте використовувати hexedit Я не пробував його на HP-UX, але це має працювати. Це дозволяє переміщатися до місця у файлі та усікати. Я впевнений, що він не читає весь файл, а лише шукає потрібне місце для відображення.
Використання є досить простим, як тільки ви запустили його, клавіші зі стрілками дозволяють вам пересуватися. F1 надає допомогу. Ctrl-G переміщується до місця у файлі (підказка: щоб перейти до кінця, використовуйте розмір файлу з нижнього рядка дисплея). Розташуйте курсор на першому байті, який ви хочете обрізати, а потім натисніть клавішу Escape T після того, як ви підтвердите, що скорочення буде зроблено. Ctrl-x виходить.
Виріжте 2 кілобайти з кінця файлу:
truncate -s-2K file
Ви можете використовувати dd, наприклад:
dd if=yourfile of=outname bs=4k count=thefirstX4kb
Використовуйте інструмент, який надає вам доступ до truncate
системного дзвінка. Ви можете це зробити лише за допомогою інструментів POSIX. Попередження, набране у браузер; будьте особливо обережні якdd
помилки навіть непрощені, ніж звичайні команди Unix. 123456 - кількість байтів, які потрібно зберегти.
dd if=/dev/null of=/file/to/truncate seek=1 bs=123456
Версія Perl набагато читає:
perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate
Ви можете використовувати split
або ed
, awk
або будь-який інший мову програмування.
vim
є обмеження 4G (може бути неправильним), але я не думаю, що це робить це на місці (може бути неправильним).