Я использовал бы Python для этого. Поместите весь этот код в файл, названный mass_replace и"chmod +x mass_replace
":
#!/usr/bin/python
import os
import re
import sys
def file_replace(fname, s_before, s_after):
out_fname = fname + ".tmp"
out = open(out_fname, "w")
for line in open(fname):
out.write(re.sub(s_before, s_after, line))
out.close()
os.rename(out_fname, fname)
def mass_replace(dir_name, s_before, s_after):
for dirpath, dirnames, filenames in os.walk(dir_name):
for fname in filenames:
f = fname.lower()
# example: limit replace to .txt, .c, and .h files
if f.endswith(".txt") or f.endswith(".c") or f.endswith(".h"):
f = os.path.join(dirpath, fname)
file_replace(f, s_before, s_after)
if len(sys.argv) != 4:
u = "Usage: mass_replace <dir_name> <string_before> <string_after>\n"
sys.stderr.write(u)
sys.exit(1)
mass_replace(sys.argv[1], sys.argv[2], sys.argv[3])
Для единственного поиска и замены одной строки в одном типе файла, решение с находкой и sed не плохо. Но если Вы хотите сделать большую обработку в одной передаче, можно отредактировать эту программу для расширения ее, и это будет легко (и вероятно быть корректным в первый раз).
На моем вопросе ответили: https://forums.freebsd.org/viewtopic.php? f=3&t=19087&p=108748
Надежда это поможет кому-то еще :-)
И согласно просьбе это - ответ из ссылки выше (если это снова становится недоступным):
da0 является Вашим диском. Первую часть (раздел) на этом называют s1. fdisk говорит, что Вам создали ту часть, таким образом,/dev/da0s1 должен присутствовать. Это - то, что Вы форматируете с newfs:
# newfs /dev/da0s1
# mount -t ufs /dev/da0s1 /mnt/usbdisk
# ls -ltr /mnt/usbdisk
total 2
drwxrwxr-x 2 root operator 512 Nov 6 18:11 .snap
С уважением
Руководство FreeBSD является неоценимым ресурсом и имеет раздел, который детализирует, как добавить диски к существующей системе: Добавление Дисков.
fdisk
для разделов
bsdlabel
для частей (для непосвященного, как разделы для разделов)
newfs
для UFS (собственная файловая система)
Быстрый 1 раздел, 1 диск части:
fdisk -BI [drive]
bsdlabel -wB [drive]s1
newfs [drive]s1a
После которого Вы могли смонтировать его с чем-то подобным:
mount [drive]s1a /mnt
В наше время необходимо использовать gpart для разделения диска (fdisk/disklabel, настигаются gpart, так как он поддерживает GPT), newfs для форматирования UFS [2] разделы и шпулька для создания файловых систем ZFS. Например, инициализировать новый, неиспользуемый диск с файловой системой UFS:
GPT:
gpart создают-s gpt adaX
gpart добавляют-t freebsd-ufs adaX
newfs/dev/adaXp1
MBR:
gpart создают-s mbr adaX
gpart добавляют-t freebsd adaX
gpart создают-s bsd adaXs1
gpart добавляют-t freebsd-ufs adaXs1
newfs/dev/adaX1s1a
Если диск уже делится, и Вы хотите повторно разделить его, видеть то, что уже присутствует с:
gpart показывают аддакса
Можно затем удалить разделы с помощью "gpart, удаляют-i y аддакс:
gpart удаляют-i 4 adaX
Можно использовать "gpart, уничтожают" для уничтожения схемы, если Вы хотите изменить ее от MBR до GPT, например:
gpart уничтожают аддакса
gpart создают-s gpt adaX
GPT обычно предпочитается в наше время, если Вы не должны взаимодействовать с системами, которые не понимают это, так как это может повредить предел на 2 ТБ и иметь до 2^32-1 разделы (в теории!).