1

Я получил zip-файл со структурой папок с круглыми скобками. Я работал над двумя процессами в CLI и теперь объединить их в сценарий

Сначала выполняется поиск в файловой структуре конкретных файлов, исправляющих круглые скобки, а затем передается tshark для обработки. мой вывод с использованием sed работает на stoud, но труба tshark не любит путь, который я выбрасываю.

find <path> -iname *.cap |sed 's/(/\\(/' |sed 's/)/\\)/'

принимает папку / папку (описание)/file.cap приводит к папке / папке (описание)/file.cap круто!

когда я добавляю это в скрипт bash

#/BIN/BASH

capfiles=($(find <path> -iname *.cap | sed ’s/(/\\(/‘ |sed ’s/)/\\)/‘))

for i in “${capfiles[@]}”;do
     tshark -r $i -T fields -e dns.qry.name |sort u > $i.uniquefqdns2lookup.txt

done

я получил

'tshark: The file "folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file folder/folder\(description\)/file.cap" doesn't exist. 

Я пытался играть с ./ в патче как явный персонаж без удачи. этот вывод выглядит так:

'tshark: The file "./"folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file "./folder/folder\(description\)/file.cap" doesn't exist.
'tshark: The file "./folder/folder\(description\)/file.cap" doesn't exist. 

Что мне не хватает? Я полностью не согласен с этим?

1 ответ1

0

В дополнение к комментарию KasiyA,

  • Убедитесь, что ваши цитаты верны. В вашем вопросе шаблоны sed показываются с обратной кавычкой (`), а не с прямой кавычкой ('). Я не знаю, так ли это на самом деле в вашем сценарии.
  • Поместите $i в двойные кавычки ("$i") (см. Этот ответ).
  • В действительности вам может не понадобиться обратная косая черта, в зависимости от настроек tshark. Использование "$i" сохранит скобки в вашем имени файла. Tshark, вероятно, ищет файл с литералом \ в названии. Пытаться

    capfiles=($(find <path> -iname *.cap )
    

и посмотрим, что вы получите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .