ファイルに関する便利なツール

この章ではファイルに関するいくつかの知っておくと 便利なツールについてその概要と簡単な使い方について 述べます。詳しくは man を見て下さい。


find
grep
sort
sed
awk
perl

● find
文字通りファイルを探すツールで、例えば次のように使います。
$ find /home -type d -print
これは、ディレクトリ /home の下にあるディレクトリを (権限がある限り)表示します。"-type d" がディレクトリであるという条件です。 このように、
find  
の形で使います。カレントディレクトリがホームディレクトリで、 自分のファイルで名前が Fer で始まるものを 探すには、
$ find . -name Fer\* -type f -print
です。"*" や ";" はシェルに解釈させないために "\" でエスケープします。 このように "-xxxxx yyyy" という形の条件でファイルを探し、 "-print" や "-exec" などでそのファイルを表示したり、そのファイルに対して 何らかの動作を行なうものです。もう一つ例をあげておきます。
$ find . \( -name 'Fer*' -o -name Ga\* \) \! -name *.tex -ok rm {} \;
これは Fer か、Ga で始まるファイルで .tex で終らないファイルを 確認付で削除するというものです。Fer\* の代わりに 'Fer*' も使えます。 日本語のマニュアルは ここをクリックして下さい。


● grep
文字列を含むファイルの検索を行ないます。例えば次のように 入力します。
$ grep alias ~/*
そうするとホームディレクトリにあるファイルで 'alias' という 文字列を含むファイルをその行とともに表示します。
/home/yositomi/.bashrc:alias   ls="ls -F"
/home/yositomi/.bashrc:alias    ll="ls -alg"
/home/yositomi/.bashrc:alias   del="rm -i"
/home/yositomi/.bashrc:alias    mail="Mail"
/home/yositomi/.zshrc:# define some aliases
/home/yositomi/.zshrc:alias   a="alias"
というように表示されるでしょう。-nオプションをつけると 行数も表示されます。日本語のマニュアルは ここをクリックして下さい。


● sort
これは、ファイルの各行をソートするものです。 たとえば、次のようなファイル(name.txt)があったとします。
James
alpha
Gamma
boo
foo
ここで
$ sort name.txt -o name.sorted
とすると、出力ファイル name.sorted は
Gamma
James
alpha
boo
foo
となります。-fオプションは大文字、小文字を区別しません。
$ sort -f name.txt -o name.sorted
とすると、name.sorted は
alpha
boo
foo
Gamma
James
となります。日本語のマニュアルは ここ をクリックして下さい。


● sed/awk
ファイルを自動的に編集したり、データベースとしての 処理をするツールです。これらは置換やソート などの基本的な変更の他、awk ではデータベースの操作といったことが できます。例えば、
$ sed -e s/alias/aaa/g ~/.bashrc
とすると、.bashrc の中の alias という文字列をすべて aaa に置き換えて 標準出力に表示します。 また、
$ ls -l | gawk '{print $5}'
とすると、ファイルのサイズだけが表示されます。 (gawk は GNU awk のことです。) 詳しくは sed は ここ を、 (g)awk は ここ を、 クリックして下さい。

また、他に perl というさらに高機能な言語もあり、 perl を使えば C 言語でプログラムをするのとほぼ同等の機能を スクリプトとして実現できます。これについては 解説書 ("Perl プログラミング"(SOFT BANK)など) を参照して下さい。また、WWW によるマニュアルへのリンクは ここをクリックして下さい。






yositomi@kusm.kyoto-u.ac.jp