もっと複雑なファイル指定をしてみよう
やまね:コマンドライン操作の便利さをもうちょっと語ってみましょう(キリッ)。
ミズノ:話を簡単にするために、「特定のディレクトリの下に、大量のテキストファイルが置いてある」なんて状態を仮定してみましょう。
編集S:編集的には良くある展開なのだ。〆切り間際に大量に送られてきたテキストファイルが、作業ディレクトリの下に……(くらっ)。
瀬尾浩史:立ちくらみしてる人がいるペン……。
hito:どう考えても「〆切り間際に送ってくる」ライター側が悪……いや待てよ、〆切り守ってる分だけマシなのか?
編集S:たぶん。〆切り破ってくる人もいるんで。
ミズノ:で、その「大量にあるテキストファイル」をまとめてチェックしたい場合、どうします?
編集S:Nautilusの「検索」機能でまとめてファイルひっかけて「Enter」して、大量にLeafpadで開いて戦う。
やまね:大変そう。
編集S:超大変です。
ミズノ:そんなときは、コマンドライン操作を使うと簡単にできちゃうんだぜジョニー! Hahahahaha!
瀬尾浩史:なぜ深夜番組風になるのペン。あとジョニーって誰ペン。
やまね:真顔で突っ込むセオペン先生。
村田:もはや気にするだけ負けなので味噌。
編集S:解決策を知りたいので教えれ。
ミズノ:ジョニーに会ったのはそう、三年前のことだった(モノローグ)。
小林:そっち教えてどうするんですかがおー。
hito:えーと、解決策の方を教えないと、ハリセンが飛んでくるので。
ミズノ:と、とりあえずの基本形は「cat *.txt > matome.txt」って感じです。これをやると「matome.txt」に、“*.txt”にマッチするテキストがまとめて出力されます。
編集S:おお! まとめて出力された! めでたいのでハリセンは勘弁してやろう。
hito:知っているのにサクラとして振る舞う編集Sさん。
瀬尾浩史:それ、バラしちゃいけないことだと思うペン。
編集S:でもこれだと、元のファイル名が分からなくて不便なのだ。人によってはテキストファイルに中身の詳細書いてくれてなくて、いきなり本文で始まったりするし。黒魔術でいいのでいい方法を教えれ。
ミズノ:んじゃ、「for i in `/bin/ls *.txt`; do echo '====='; echo $i; echo '====='; cat $i ; done> matome.txt」とか。例によって「matome.txt」は好きなファイル名にしていいです。
編集S:くっ、いきなり全力投球の黒魔術……!
村田:ちなみに、「matome.txt」という名前のファイルがすでにあると、中身が置き換わっちゃうので注意するで味噌。
あわしろいくや:よくやる小技ですな。説明一切なしでいきなりだと魔法の呪文に見えるかもしれませんが。
編集S:よく分からないままコピペしたら、なんか期待した通りの出力が……。つよい。
小林:がおー。コマンドライオンがおー。
hito:呪文に誘われて、よく分からない状態のリーダーも現れたようです。
編集S:おおお、すばらしい。ディレクトリに分散してる場合は「`/bin/ls *.txt`」って部分を「`/bin/ls */*.txt`」とかって応用すればOK?
hito:OKなんですけど、「`find . -name '*.txt'`」に置き換えて頂くと、「そのディレクトリ以下にある*.txtという名前にマッチするファイル」を対象にしたりできます。「for i in `find . -name '*.txt'`; do echo '====='; echo $i; echo '====='; cat $i ; done> matome.txt」ですね。
瀬尾浩史:魔法の呪文を唱えればいろいろ一括処理できるペン。
あわしろいくや:イ、イラストの元ネタが大変なことになってますな……!
やまね:食われてるし。
瀬尾浩史:ふふふふふ、収録のあとでイラストを描いてることを最大限活用した時事ネタペン……!
編集S:コマンドについては、まほーの呪文すぎてよく分からないけど、とりあえず丸ごと覚えることにした!
やまね:前回やったみたいに、[Ctrl]+[R]で履歴から呼び出せば、何度でも同じ小技を使い回せますよ、と。
編集S:おお、そういえばこれを覚える必要すらないのか……! ていうか、これ何がどうなってるのか解説求む。
hito:分量多いので、次ページですねぇ。中身さえ把握してしまえば難しくはないんで、即興でいろいろ応用が利く気がします。
(次ページへ続く)
この連載の記事
-
第61回
PC
~師範、Ubuntu道場が最終回です!~ -
第60回
PC
~師範、組版システム「TeX」について教えてください!~ -
第59回
PC
~師範、Ubuntu関連のイベントを教えてください!~ -
第58回
PC
~師範、日本語Remixの作り方を教えてください!~ -
第57回
PC
~師範、Ubuntu独自のテクノロジーについて教えてください!~ -
第56回
PC
~師範、いまどきの仮想化について教えてください!~ -
第55回
PC
~師範、Ubuntu 12.04の特徴を教えてください!~ -
第54回
PC
~みなさん、Ubuntuに触ったきっかけを教えてください!~ -
第53回
PC
~師範、Ubuntuのヘビーユーザーってどんな感じでしょう?~ -
第52回
PC
~師範、Ubuntuは今後どうなるんですか?~ -
第51回
PC
~師範、ARMって何ですか!~ - この連載の一覧へ