Shell

使用自定義名稱和 gzip 從流輸出中拆分文件

  • December 1, 2020

我有一個帶有 while 循環的腳本,可以列印文本。我想將其保存到具有自定義名稱的文件中。

腳本:

#!/bin/bash
while true
do
   echo "Press [CTRL+C] to stop.."
done

我可以執行拆分:

./loopscript.sh  | split -dl 10000 --additional-suffix=.txt

輸出:

x001.txt
x002.txt
x003.txt
x004.txt
x005.txt

但我想像下面這樣保存它:

myoutput.001.gz
myoutput.002.gz
myoutput.003.gz
myoutput.004.gz
myoutput.005.gz

對於自定義名稱(前綴),您可以將其作為參數添加到末尾。要通過您過濾所有輸出文件,gzip您可以使用該--filter=COMMAND選項。-a3如果您需要將後綴長度定義為 3 個字元(等)001,也是可選的。002還要注意-輸出前綴參數之前的(讀取標準輸入)。

./loopscript.sh | split -a3 -dl 10000 --filter='gzip > $FILE.gz' - myoutput. 

將生成 gzip 壓縮文件(如果解壓縮,則為 10K 行),名稱如下:

myoutput.000.gz
myoutput.001.gz
myoutput.002.gz

man split語法說(可選)輸出前綴到最後:

SYNOPSIS
      split [OPTION]... [FILE [PREFIX]]

--filter接受命令$FILE中的文件名split

      --filter=COMMAND
             write to shell COMMAND; file name is $FILE

引用自:https://unix.stackexchange.com/questions/622329