簡體   English   中英

如何使用cut壓縮文件以從日志文件中排除文件名的路徑

[英]how to gzip a file using cut to exclude the path of the filename from a log file

我有一個日志文件,該文件將打印批處理文件是否成功處理。 第三列顯示狀態字母“ F”表示失敗或“ C”表示完成。 第5列顯示完整路徑和批處理文件名。

日志文件輸出示例:

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壓縮到備份目錄,同時保持從第5列提取的相同文件名,而沒有路徑,只是文件名。

碼:

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使用上面的日志文件中的示例輸出應具有mnop​​.dat.gz。

捕獲輸出:

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

但是我認為這比您嘗試做的要好(XY問題),因為您嘗試從完整路徑獲取文件名:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM