シェル 一目置かれるワンライナーの使い方 find, for

プログラミングbash

シェルで覚えておいた方がよいと思うのがfind, forです。

cd, ls, cat, tail, grepあたりはみんなが覚えていますが、find, forを使いこなす人はあまりいません。

しかし、日常的にfind, forを使えるようになるととても便利です。

シェル

Linuxを習う時、まずシェル(多くはbash)の使い方を覚えます。

Windowsではcmdを出さなくても何とかなりますが、Linuxでターミナルを出さずに何かをするのは困難ですから。

最初に覚えるのは、cd, ls, cat, tail, grepあたりでしょうか。

これくらいしか使えない人が多いです。

次のレベルはfind, forが使えるようになることです。

findとforを使えるようになると作業が捗るようになります。

本格的にシェルを学びたい方は以下の本がお薦めです。超ロングセラーです。

findの使い方

findは何らかの条件をみたすファイルのリストを出力します。

カレントディレクトリの配下の(最下層まで含めた)ファイルを表示するには、

find . -type d -print

※最近では-printはいらないみたいですが、私は古い人間なのでつけてしまいます

同様にファイル一覧は、

find . -type f -print

いちばんよく使うのはファイル名検索です。例えばカレント配下のreadmeを探したい場合

find . -name "*readme*" -print

たったこれだけなんですが、覚えておいた方がよいです。

ソースファイルやヘッダファイルを検索するとき、トレースファイルを検索するときなどに重宝します。

forの使い方

if, while, caseなど制御文はあります。これらはシェルスクリプトではよく使いますがワンライナーで使うのは珍しいです。

しかし、forだけはワンライナーでよく使います。

forの使い方は、以下です。

for 変数 in リスト
do
   コマンド
done

doとかdoneとかが面倒ですが、そのまま覚えておきます。

例えば、00.txtから99.txtまでのファイルを作りたいとき

for a in {00..99}
do
  touch $a.txt
done

テストをするときなどにこういうことをやりたくなります。

リストの中にはいろいろ入れることができますが、例えばlsの結果を入れたいときはlsをバッククォートで囲んでください。下の例もlsをバッククォートで囲んでください。

for a in ls
do
  wc -l $a
done

これはパイプしてxargsかますのと大体同じです。

ls | xargs wc -l

私は直観的にfor文の方が分かりやすいような気がします。

findの結果をforのリストに入れるのもありです。

for a in find . -name "*readme*" -print 
do
  wc -l $a
done

※findから-printまでバッククォートで囲んでください

このくらいまでは日常的にできるようになると周りのエンジニアに一目置かれます。

まとめ

シェルを使う方々、findとforの使い方は覚えましょう。

>>> 今日を生き抜くプログラミングの知識 bash(シェル)の知識

コメント

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました