テキストを印刷する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