Заменить несколько файлов одним файлом

Пакет tkmib, кажется, был «сломан» в течение некоторого времени.

Взгляните на очень старую ошибку. Нет значений из OID с tkmib в списке рассылки Debian с 2010 года. Версия net-snmp по умолчанию, поставляемая с Ubuntu, была 5.4.3 и работает должным образом с другие SNMP-зависимые приложения (например, Cacti), но не с tkmib.

Недавно я скомпилировал новую версию net-snmp (версия 5.7.2) после Нет значений из OID с tkmib [ ! d2] и смог получить некоторое минимальное использование из tkmib.

После компиляции мне удалось получить некоторые значения, возвращаемые tkmib. Однако интерфейс приложения не действует, как можно было бы ожидать. То есть при выдаче запроса get в экземпляре MIB (например, запрос на MIS sysDesc, например) tkmib возвращает значение NOSUCHINSTANCE. Однако при выдаче запроса getnext в том же экземпляре возвращается фактическое ожидаемое значение.

Я настоятельно рекомендую использовать другой браузер MIB, например snmpb. Функциональность и интерфейс SnmpB намного превосходят для получения точных значений SNMP, на мой взгляд, по сравнению с tkmib.

Просмотр MIB, опрос, а также установка MIBS далеки менее болезненным, чем использование tkmib

Если вы настроены на использование tkmib, имейте в виду, что вам также необходимо вручную создать каталог ~/.snmp, чтобы сохранить любое из ваших измененных значений между сеансами.

Если вы хотите взять snmpb для вращения, вы можете загрузить файл .deb snmpb и установить его с помощью sudo dpkg -i snmpb_0.8_i386.deb

. Желаем удачи.

1
задан 14 September 2012 в 05:30

4 ответа

Использовать bash's for (если вы используете bash):

for file in blah.*.txt; do
    cp original.txt "$file"
done
2
ответ дан 25 May 2018 в 06:32
  • 1
    Да, это плохо. Я думал, что что-то другое вызывает начальную ошибку. – Oli♦ 14 September 2012 в 15:12

Вы можете попробовать это, избегая for-loops и сохраняя вещи в одной строке:

ls blah.* | xargs -n 1 cp original

Вы получаете cp: target blah.1.txt is not a directory в своей первоначальной попытке, потому что cp ' В нескольких файлах предполагается, что все они будут перенесены в каталог, предоставленный в качестве последнего аргумента. Это просто неправильный синтаксис. Цитирование man cp:

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Единственно использование cp не поможет вам. См. Также этот вопрос.

1
ответ дан 25 May 2018 в 06:32

Сделайте это:

for i in `ls *.txt`; do cat original > $i; done

, где оригинал является текстовым файлом. cat просто сбрасывает содержимое, а > передает содержимое в новый файл, представленный $i (расширенный из списка, возвращаемого командой ls *.txt)

Обратите внимание, что это полностью перезапишет эти файлы, чтобы вы могли сначала добавить их в другой каталог. Это будет сделано для чего-либо с расширением .txt (включая исходный файл, если это расширение .txt), поэтому вы можете захотеть переименовать вещи или использовать лучшее соглашение (например, blah * вместо * .txt) [!d2 ]

1
ответ дан 25 May 2018 в 06:32
Вот еще один вариант использования [F2]:

find ./ -name 'blah.*.txt' -exec cp original.txt {} \;

Вы спрашиваете find, чтобы начать в текущем каталоге и найти файлы, имя которых соответствует шаблону (в кавычках, чтобы избежать оболочки расширяя его и позволяя найти расширение шаблона), и для каждого найденного файла выполните команду между -exec и \;. В этой команде {} заменяется на имя найденного файла

Посмотрите на этот ответ за хорошую сделку информации об использовании find эффективно. :

Как я могу использовать найти команду более эффективно?

1
ответ дан 25 May 2018 в 06:32

Другие вопросы по тегам:

Похожие вопросы: