ファイル名のリダイレクトと行番号

ファイル名のリダイレクトと行番号

次の行数でファイル名を指定しようとしていますcrontab

* * * * * ~/script > "~/targetfile-$(rows-count).csv"

私はできます:

* * * * * ~/script > "~/targetfile-$(~/script | wc -l).csv"

しかし、スクリプトを2回実行するよりも優れていると思います。

助けてください?ありがとう

ベストアンサー1

ここでは、解釈のコマンドラインをcron使用して、次のように指示できます。zsh

SHELL=/bin/zsh
* * * * * TMPPREFIX=~/.; (){ mv -- $1 ~/targetfile-$(($(wc -l < $1))).csv; } =(~/script)

つまり、=(...)プロセス置換を使用してスクリプトの出力を一時ファイル(単に名前を変更するのではなく~隠しファイルとして)に保存する場合、ここでは名前をターゲットファイルの名前に置き換える匿名関数にパラメータとして渡されます。/tmpmv

あるいは、スクリプト出力を一時ファイルに提供することもできますwc -l

SHELL=/bin/zsh
* * * * * TMPPREFIX=~/.; (){ ~/script >&1 > $1 | wc -l | read n; mv -- $1 ~/targetfile-$n.csv; } =(:)

おすすめ記事