【问题标题】:Using loop to convert multiple files into separate files使用循环将多个文件转换为单独的文件
【发布时间】:2017-02-27 22:23:12
【问题描述】:

我使用此命令通过 tcpdump 将多个 pcap 日志文件转换为文本:

$ cat /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* | tcpdump -n -r - > /home/dalya/snort-2.9.9.0/snort_logs2/bigfile.txt

而且效果很好。

现在我想分离输出,每个转换后的文件使用这样的循环在一个单独的输出文件中:

for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do
tcpdump -n -r "$f" > /home/dalya/snort-2.9.9.0/snort_logs2/"$f.txt" ; 
done

但它给了我:

bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894664.txt: No such file or directory
bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894770.txt: No such file or directory
bash: /home/dalya/snort-2.9.9.0/snort_logs2//home/dalya/snort-2.9.9.0/snort_logs/snort.log.1487346947.txt: No such file or directory

我认为$f 中的问题,我哪里出错了?

【问题讨论】:

    标签: loops for-loop converter cat tcpdump


    【解决方案1】:

    如果你跑了

    for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do
        echo $f
    done
    

    你会发现你得到了

    /home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894664
    /home/dalya/snort-2.9.9.0/snort_logs/snort.log.1485894770
    /home/dalya/snort-2.9.9.0/snort_logs/snort.log.1487346947
    

    你可以使用basename

    仅获取文件名,如下所示:

    for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do
        base="$(basename $f)"
        echo $base
    done
    

    一旦您对它的工作感到满意,请删除 echo 语句并使用

    tcpdump -n -r "$f" > /home/dalya/snort-2.9.9.0/snort_logs2/"$base.txt"
    

    改为。

    编辑:tcpdump -n -r "$base" > ... 应该是 tcpdump -n -r "$f" > ...;您只想在创建新文件名的上下文中使用$base,而不是在读取现有数据的上下文中。

    【讨论】:

    • 我按照你说的做了,直到最后一个,当我使用这个时:# for f in /home/dalya/snort-2.9.9.0/snort_logs/snort.log.* ; do base="$(basename $f)" tcpdump -n -r "$base" > /home/dalya/snort-2.9.9.0/snort_logs2/"$base.txt" 完成。它给了我这个: tcpdump:snort.log.1485894664:没有这样的文件或目录 tcpdump:snort.log.1485894770:没有这样的文件或目录 tcpdump:snort.log.1487346947:没有这样的文件或目录 tcpdump:截断的转储文件;试图读取 4 个文件头字节,只得到 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多