我收到了一个 zip 文件,其文件夹结构包含括号。我在 cli 上完成了两个流程,现在将它们合并为一个脚本
首先在文件结构中搜索特定文件,纠正括号,然后通过管道传输到 tshark 进行处理。我使用 sed 的输出在 stoud 上有效,但管道 tshark 不喜欢我抛出的路径。
find <path> -iname *.cap |sed 's/(/\\(/' |sed 's/)/\\)/'
采用 folder/folder(description)/file.cap 生成 folder/folder(description)/file.cap cool!
当我将它添加到 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
除了 KasiyA 的评论外,
- 确保您的引号正确。在您的问题中,模式
sed
以反引号 (`) 而不是正引号 (') 结尾。我不知道您的脚本中是否确实如此。 - 将 放在
$i
双引号 ("$i"
) 中(参见这个答案)。 您可能实际上不需要反斜杠,这取决于 tshark 的设置。使用将保留文件名中的括号。Tshark 可能正在寻找名称中
"$i"
包含文字的文件。尝试\
capfiles=($(find <path> -iname *.cap )
看看你得到了什么。