我有一个带有 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
答案1
对于自定义名称(前缀),您可以将其添加在末尾作为参数。要过滤所有输出文件,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