揮発性のメモ2

知識をメモ書きしておく

xargsで個別のファイルにリダイレクトしたい

たとえば、HOGE の行数を数えて HOGE.count にぶっこむ

cat filelist | xargs -IXXX wc -l XXX > XXX.count

これでできるかなーと思ったけど無理だった。

forを使う方法

関数化する方法


どちらも面倒くさそうなのでパス。
思いついた方法: shを呼ぶ

cat filelist | xargs -IXXX sh -c 'wc -l XXX > XXX.count'

拡張子変更も可能

cat filelist | xargs -IXXX sh -c 'A=XXX; wc -l XXX > ${A%txt}count'

思いっきりコマンドインジェクションの脆弱性あるけど、まあいい。
sh -c の部分をechoに置き換えれば何が実行されるかあらかじめ眺められるので、それで我慢する


本当にやりたかったのは、mysqldumpでのテーブルごとの個別ダンプ

mysql -uUSER -pPASS DBNAME -Nse 'show tables' | xargs -IXXX sh -c 'echo XXX; mysqldump -uUSER -pPASS DBNAME XXX > XXX.sql'
mysqldump -uUSER -pPASS DBNAME -ntd -R DBNAME > ROUTINE.sql