如何使用剪切来gzip文件以从日志文件中排除文件名的路径



我有一个日志文件,如果成功处理批处理文件,则打印。第三列显示" F"的状态字母,用于失败或" C"。第五列显示了完整的路径和批处理文件名。

日志文件输出的示例:

392  02/04/2018:2:00  c  4444 /batchprocessing/abc.dat
444  02/04/2018:3:00  F  4442 /batchprocessing/mnop.dat  
3333 02/04/2018:4:00  c  2234 /batchprocessing/xyz.dat

我正在尝试将所有具有" f"状态的批处理文件gzip到备份目录,同时将相同的文件名从第五列中拔出相同的文件名,而没有路径,只有文件名。

代码:

while read -r f1 f2 f3 f4 f5 f6 f7 ; do
    if [ "${f3}" = "F" ] ; then
        gzip "${f6}" > /backup/batch_backups/"${f6}" cut -c 17-30
    else
          echo "No Error!"
    fi
done < batch.log

cut -c 17-30仅应拉出文件名,不包括文件的路径。

例如batch_backups使用上面的日志文件输出的示例输出。

捕获输出:

gzip "${f6}" > /backup/batch_backups/"$(cut -c 17-30 <<<"${f6}")".gz

,但我认为这比您想做的(XY问题(要好,因为您正在尝试从完整路径中获取文件名:

gzip "${f6}" > /backup/batch_backups/"$(basename "${f6}")".gz

您也可以使用${f6##*/}代替basename

最新更新