Skrypt bash przetwarzający pliki ze złymi znakami

1

Otrzymałem plik zip ze strukturą folderów zawierającą nawiasy. Przeszedłem dwa procesy w cli i teraz łączę je w skrypt

Najpierw przeszukuje strukturę plików w poszukiwaniu określonych plików poprawiających nawiasy, a następnie potoki do tshark w celu przetworzenia. moje wyjście z użyciem sed działa na stoud, ale rekin fajki nie lubi ścieżki, którą rzucam.

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

zabiera folder / folder (opis) /file.cap powoduje, że folder / folder (opis) /file.cap jest cool!

kiedy dodam to do skryptu 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

dostaję

'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. 

Próbowałem grać z ./ w łatce jako wyraźna postać bez powodzenia. to wyjście wygląda następująco:

'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. 

czego mi brakuje? Czy jestem całkowicie z tego powodu?

furman
źródło
zmień #/BIN/BASHna #!/bin/bash.
αғsнιη

Odpowiedzi:

0

Oprócz komentarza KasiyA,

  • Upewnij się, że Twoje oferty są prawidłowe. W twoim pytaniu sedwzory są wyświetlane kończąc się na cudzysłów (`), a nie na cudzysłów ('). Nie wiem, czy tak jest w twoim skrypcie.
  • Wstaw $ipodwójne cudzysłowy ( "$i") (zobacz tę odpowiedź ).
  • W zależności od ustawień tshark możesz nie potrzebować odwrotnych ukośników. Użycie "$i"spowoduje zachowanie nawiasów w nazwie pliku. Tshark prawdopodobnie szuka pliku z literałem \w nazwie. Próbować

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

i zobacz co dostajesz.

cxw
źródło
Musiałem dodać kolejny nawias na końcu, ale oto mój wynik (bez zmian) „tcpdumps / tcpdumpLog (coś) /traffic.cap tcpdumps / tcpdumpLog (coś) /traffic.cap tcpdumps / tcpdumpLog (coś) /traffic.cap tcpdumps /tcpdumpLog(something)/traffic.cap tcpdumps / tcpdumpLog (coś) /traffic.cap ”skąd pochodzą wiodące i końcowe cytaty?
Carter
Myślę, że odpowiedziałem na własne pytanie
Carter
Myślę, że odpowiedziałem na moje pytanie dotyczące podwójnych cytatów. Nie miało to wpływu na pierwotne wydanie.
Carter
@carter, więc jaki był problem? W razie potrzeby prześlij i zaakceptuj własną odpowiedź, aby pytanie nie znalazło się na liście „bez odpowiedzi”. Dzięki!
cxw