
目次
ファイルやディレクトリの検索(find)
findはファイルやディレクトリを検索するコマンドです。
条件に一致するファイルを探すときに使用します。
書式:
find [検索場所] オプション 検索条件 |
主なオプション:
-name 文字列 | 指定文字列を含むファイルやディレクトリを検索する。 |
-atime 日数 | 指定日にアクセスしたファイルやディレクトリを検索する。 「0」が今日。「1」が昨日。 |
-mtime 日数 | 指定日に更新したファイルやディレクトリを検索する。 「0」が今日。「1」が昨日。 |
-perm 権限 | 指定した権限を持つファイルやディレクトリを検索。 指定は数字かアルファベット。 |
-size 容量 | 指定サイズのファイルを検索する。単位はc(byte)やk(Kbyte)。 +-も使える。 |
-type {d/f/l} | d=ディレクトリ、f=ファイル、l=シンボリックリンクを検索する。 |
-user ユーザ | 指定したユーザが所有者となるファイルやディレクトリを検索する。 |
-maxdepth 数 | 指定した数の階層まで検索する。 |
-mindepth 数 | 指定した数の階層は表示しない。 |
検索結果を標準出力する。(デフォルト動作) | |
-print0 | ファイルの区切りや空白にNULL文字を埋め込んで出力する。 |
-exec コマンド | 検索結果に対してコマンドを実行する。 |
<実習: findを使った検索>
$ find . -name "ls-*" -size -100c
./ls-output
$ find -name "ls-*" -size -100c
./ls-output
検索場所を省略した場合はカレントディレクトリを検索対象にします。複数の条件がある場合は、続けてオプションをつないでいきます。
上記は、カレントディレクト内で「ls-」で始まるファイル、且つ、100byte以下のものを検索しています。
また、「-user」オプションはオプションの後にユーザ名を指定しますが、ユーザIDでも実行できます。例えばrootユーザが所有者となるファイルを検索する場合、「-user root」でも「-user 0」でも同じ動作になります。
高速な検索(locate)
locateはファイルやディレクトリを高速検索するコマンドです。findコマンドは直接ファイルやディレクトリを探しますが、locateはあらかじめ検索しておいたファイルやディレクトリのリストのデータベースを検索するため、高速な検索を行うことができます。
書式:
locate 検索文字列 |
locateコマンドはあらかじめ用意されたデータベースを検索するため、直前に追加したファイルやディレクトリを検索することができません。そのため、データベースを更新するupdatedbコマンドを使用し、データベース情報を更新します。
書式:
updatedb [オプション] |
主なオプション:
-e ディレクトリ | データベースから除外したいディレクトリを指定します。 |
-o DB名 | 更新したい対象のDB名を指定します。(独自DBを作成したい場合に使用。) |
設定ファイルは、/etc/updatedb.confです。
なお、ファイルのデータベースの更新は、システム起動時や定期的に自動で行われるので長時間にわたり更新されていない状態が続くことはありません。
コマンドのパスを検索(type)
コマンドの実行パスを知るためのコマンドがいくつかありますが、その中の一つにtypeコマンドがあります。
書式:
type [オプション] コマンド名 |
主なオプション:
-a | 検索可能なものを全て表示 |
-t | 実行されるコマンドに応じてタイプ(「alias」「keyword」「function」「builtin」「file」)を表示 |
typeコマンドは、コマンドのタイプを調べるコマンドです。「エイリアス」→「ビルトインコマンド(組み込みコマンド)」→「環境変数PATH」の順に探し、見つけたものを表示します。
「-a」オプションを用いることで、コマンドのパスを知ることもできます。
<実習: typeコマンドの実行>
試しにlsコマンドを調べてみましょう。
$ type -a ls
ls is aliased to `ls --color=auto' ls is /usr/bin/ls
lsコマンドの実態は、「/usr/bin/ls」であるとわかります。
また、lsコマンドにはエイリアスが設定されていることがわかりました。lsコマンド実行時、ディレクトリや実行ファイルに色が付くのは、このエイリアスによるものです。colorのオリジナル設定は /etc/DIR_COLORS にあります。
今度はcdコマンドを調べてみましょう。
$ type -t cd
builtin
cdコマンドをtypeコマンドで確認してみるとビルトインコマンド(組み込みコマンド)であることがわかります。
通常、コマンドの実行は「人間がコマンドを入力する」→「シェルが受け付ける」→「実行プログラムに依頼する」というプロセスで実行されますが、実はシェル自身にコマンドが含まれているケースがあり、これに該当するものは実行プログラムに渡すことなくシェル自身で処理することができます。これをビルトインコマンドと言います。
エイリアス(alias)
bashでは、エイリアス機能を用いることで、コマンドに別名を付けたり、コマンドをひとまとめにして新しいコマンドのように実行できるようにします。
書式:
alias エイリアス名=エイリアスにしたい内容 unalias エイリアス名 unalias -a |
<実習:aliasコマンドの実行>
$ alias ls='ls -la'
$ ls
合計 1696 dr-xr-x---. 2 root root 180 7月 20 15:10 .
dr-xr-xr-x. 17 root root 224 5月 14 16:17 ..
-rw-------. 1 root root 2286 8月 26 14:44 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
$ \ls
$ unalias ls
上記は、lsコマンドを実行した時に、「-la」が自動付与されるように設定しています。この場合のエイリアス名は「ls」となり、「ls」を実行した時に実際に入力される値が「ls -la」になります。
なお、この状態でエイリアス名である「ls」の頭に「\(バックスラッシュ)」をつけるとエイリアスを無効にすることが出来ます。上記実行例では、rootユーザのホームディレクトリにはファイルが存在しないため、何も表示されません。
設定したエイリアスを解除する場合は「unelias」コマンドを使用します。「-a」オプションを付けてunaliasコマンドを実行すると、設定されている全てのエイリアスが解除されます。