
コンソール上で1行から連続したn文字の組み合わせを取得する
ふと、先日のシェル芸勉強会のQ…
-->
コンソール上で、コマンドの結果を複数のファイルに出力したいことがある。
そういった場合、残念ながらbashの場合、リダイレクトだと複数のファイルへ同時に書き込むといったことは難しい。じゃ、どうすればいいのかというと、teeコマンドであれば複数ファイルを指定できるので、それで対応する。
コマンド | tee ファイル1 ファイル2 ファイル3 ... >& /dev/null # 追記しない場合 コマンド | tee -a ファイル1 ファイル2 ファイル3 ... >& /dev/null # 追記する場合
blacknon@BS-PUB-UBUNTU-01:~/test_dir$ ls blacknon@BS-PUB-UBUNTU-01:~/test_dir$ echo aaa | tee test{01..20}.txt >& /dev/null blacknon@BS-PUB-UBUNTU-01:~/test_dir$ ls test01.txt test04.txt test07.txt test10.txt test13.txt test16.txt test19.txt test02.txt test05.txt test08.txt test11.txt test14.txt test17.txt test20.txt test03.txt test06.txt test09.txt test12.txt test15.txt test18.txt blacknon@BS-PUB-UBUNTU-01:~/test_dir$ grep '' ./* ./test01.txt:aaa ./test02.txt:aaa ./test03.txt:aaa ./test04.txt:aaa ./test05.txt:aaa ./test06.txt:aaa ./test07.txt:aaa ./test08.txt:aaa ./test09.txt:aaa ./test10.txt:aaa ./test11.txt:aaa ./test12.txt:aaa ./test13.txt:aaa ./test14.txt:aaa ./test15.txt:aaa ./test16.txt:aaa ./test17.txt:aaa ./test18.txt:aaa ./test19.txt:aaa ./test20.txt:aaa
なお、zshの場合は以下のように複数ファイルを指定してのリダイレクトが可能になっている。
BS-PUB-UBUNTU-01% echo $0 zsh BS-PUB-UBUNTU-01% ls BS-PUB-UBUNTU-01% echo aaa > test_{01..20}.txt BS-PUB-UBUNTU-01% ls test_01.txt test_04.txt test_07.txt test_10.txt test_13.txt test_16.txt test_19.txt test_02.txt test_05.txt test_08.txt test_11.txt test_14.txt test_17.txt test_20.txt test_03.txt test_06.txt test_09.txt test_12.txt test_15.txt test_18.txt BS-PUB-UBUNTU-01% grep "" test_* test_01.txt:aaa test_02.txt:aaa test_03.txt:aaa test_04.txt:aaa test_05.txt:aaa test_06.txt:aaa test_07.txt:aaa test_08.txt:aaa test_09.txt:aaa test_10.txt:aaa test_11.txt:aaa test_12.txt:aaa test_13.txt:aaa test_14.txt:aaa test_15.txt:aaa test_16.txt:aaa test_17.txt:aaa test_18.txt:aaa test_19.txt:aaa test_20.txt:aaa