Linuxコマンド・bashの使い方実例

Linuxコマンド・bashの使い方の実例を紹介します。
管理人は某企業で、一応SEとして働かせていただいております(本業は組み込み系)。
まだまだ未熟者ですが、皆さんのお役に立てたら幸いです。

タグ:findコマンド

findコマンドを実行すると、ファイルのリストを取得することができます。
これを他のコマンドに渡すには、execオプションを指定します。

■実行例
find . -name "*.txt" -exec touch {} \;

■解説
上記を実行すると、
カレントディレクトリ以下を再帰的に検索し、
.txt拡張子ファイルタイムスタンプを現在時刻へ変更します。

-execの後には、findコマンドの結果に対して行うコマンドを指定します。
例の場合、タイムスタンプを現在時刻へ変更するtouchコマンドを指定しています。
この時、findコマンドの実行結果は、{}の箇所に入ります。
{}を入れるのを忘れるとエラーになります。意外と忘れやすいので注意しましょう。

-execで指定するコマンドの最後に、セミコロン(;)を入れる必要があります。
しかしそのままセミコロンを入れると、コマンドを続けて実行するセミコロンの意味と重複してしまいます。
そのため、バックスラッシュまたは円マークで、エスケープする必要があります。

以下はexecオプション以外の部分の解説です。

findの直後は検索を開始するディレクトリを指定します。
例では、カレントディレクトリ(.)を指定しています。

-nameオプションは、検索対象のファイル名を指定します。
例ではワイルドカード(*)の正規表現を用いて、
ファイル名の最後が.txtであるファイルを検索対象としています。

■補足
findコマンドでよく使うオプションを紹介します。

-mindepth
 結果に出力する最小階層数を指定します。
-mindepth 1とすると、実行結果に出力される、検索開始ディレクトリ自体(.等)を除外することができます。

-maxdepth 結果に出力する最大階層数を指定します。
-mindepthの逆の使い方です。
-mindepthと組み合わせて、-mindepth 1 -maxdepth 1とすると、カレントディレクトリのみを検索対象とすることができます。

-type 検索対象のファイルタイプを指定します。
-type f とすると、ファイルのみを検索対象にします。
-type d とすると、ディレクトリのみを検索対象にします。
他の種類も指定できるので、詳しく知りたい方は--helpやman findで確認してください。


解説は以上です。
今回説明した内容は、どれも非常によく使うので、
Linuxコマンドを使う方は、何も見ずに実行できるようにしておきましょう。
作業がとても効率化します。
スポンサードリンク
スポンサードリンク

ちょっとした小ワザ(ってほどでもないのですが・・)、
特定のディレクトリ、あるいはファイルの、特定の行のみ出力する方法を記載します。 
下記のsedコマンドで、指定したファイルの指定した行を出力できます。 

sed -n [行数]p [ファイル名]

※-nオプションは、条件に含まれない行は出力させないオプションです。
※カッコ[]は含めないでください。

ディレクトリに含まれるファイル全てを対象に出力する場合は、
以下のようにfindコマンドと組み合わせます。

find [ディレクトリ] -type f -exec sed -n [行数]p {} ¥;

特定の拡張子のファイルを対象にする場合(例では拡張子が.c)、
findコマンドに-name '*.c'などのオプションでフィルターをかけることもできます。

find [ディレクトリ] -type f -name '*.c' -exec sed -n [行数]p {} ¥;

このようにgrepやfindやsedを組み合わせて使い慣れることで、
作業効率を格段に上げることができます。
Linux環境を使う方には必須のテクニックでしょう。 

↑このページのトップヘ