Shell
使用自定義名稱和 gzip 從流輸出中拆分文件
我有一個帶有 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