WindowsやMacのようなGUI-OSを使っていると、ファイル検索機能というのが当たり前のようにあるが、Linuxサーバーでの検索は基本、辛い。
whereなどの便利コマンドもあるが、仕事でサーバーを複数台相手にしていると、なるべくなら、基本コマンド内で操作を行いたい。
find
検索対象ディレクトリが数個程度であれば、lsコマンドで物足りるが、
1、システム全体から検索する
2、膨大なディレクトリ内のどこに片付けたかわからなくなってしまった場合
など、サクッとコマンドで検索できてしまうと、便利だと思いません?
え?あまりそんな境遇にならない??
web開発をしている人にとっては、かなりの確率で「アルアル」話なんだが・・・
とりあえず、
findコマンドを覚えましょう。
現在いる場所から下にあるファイルの総数
$ find . |wc -l
特定の名前を条件検索する
※.htmlファイルの一覧数を取得
$ find ~/ -name "*.html"|wc -l
※-nameでファイル名の検索になる。
フォルダの総数を取得
$ find ~/ -type d|wc -l
Option
-typeはファイルタイプ
f : ファイル
d : ディレクトリ
l : シンボリックリンク
サンプル集
30日以上前に更新されたpng形式のファイルを検索して表示する
$ find . -name "*.png" -atime +30 -print
応用:ホーム・ディレクトリ以下の100Kバイト以上のファイルの詳細情報を表示する
$ find ~/ -size +100k -ls
「/home」以下からuser1が作成したfile1を検索する
$ find /home -name file1 -user user1
ホームディレクトリ以下の拡張子shtmlのファイルをファイル詳細付きで検索する
$ find ~/ -name "*.shtml" -ls
ホームのpublic.shtml以下で拡張子がgifでかつサイズが、100Kバイト以上のファイルを探し,結果をresultファイルに書き込む
$ find ~/public.shtml -name "*.gif" -and -size +100k -fprint result
tempを含むファイルを探し,削除を行う
$ find ~/ -name "*temp*" -ok rm {} \;
すべてのユーザーが書き込み可能なファイルを探す
$ find ./ -perm -a+w -type f
チルダ(~)ファイルを削除する
$ find ~/ -name *~ -exec rm {} \;
空のファイルやディレクトリを削除する
$ find ./ -empty | xargs rm -rf
参考
リファレンス
0 件のコメント:
コメントを投稿