信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

2019

9

10月

素敵だら! Linux コマンド ~基本編 その3~

テクログ

こんにちはうなぎです。


IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。


今回も前回に引き続き「~基本編 その3~」です。


■find


私の一番好きなコマンド find。

その名前からもわかる通り、ファイルやディレクトリなどを探すコマンドです。


まずは基本的な使い方から。

今いるディレクトリの中から admin ユーザーが作成した、test_{日付}.txt ファイルってどこにあったっけ?を調べるときは


find ./ -user admin -type f -name test*.txt


のようにします。


`-name` は探す対象の名前を指定するオプションで、ワイルドカードが使用できます。

※ `-regex` を使えば正規表現も可能です


`-type` は探す対象の種類を指定します。種類は以下の通りです。


  • ファイル `f`
  • ディレクトリ `d`
  • シンボリックリンク `l`


これだけでも結構便利なんですが、 `find` コマンドの肝はなんといっても `-exec` オプション。

これを使えば検索した結果に対して、コマンドを実行できます。


例えば先ほどの test.txt をすべて削除したいときは、


find ./ -user admin -type f -name test*.txt -exec rm {} \;


といった具合です。


この例でいうと、 `{}` に検索結果のファイルが一つずつ置き換わり、 `rm` によって削除されます。

末尾についている `\;` は何かというと、セミコロンが `-exec` オプションの終了を意味し、バックスラッシュはエスケープだそうです。   


参考: https://stackoverflow.com/questions/20913198/why-are-the-backslash-and-semicolon-required-with-the-find-commands-exec-optio


`\;` の代わりに `+` を使用することで、コマンドに渡していた検索結果を、一つずつではなく、

まとめた形で渡すことができます。


上記の例でいえば、 `\;` は


rm test1.txt
rm test2.txt
rm test3.txt


となり、`+` は


rm test1.txt test2.txt test3.txt


となります。


他にも検索するディレクトリの階層の深さを指定する `-mindepth` `-maxdepth`

特定のディレクトリ検索対象から除外する `-prune`

更新日からファイルを探す `-mtime`

など、機能がとても充実しています。


以上、細かい要望にも応えてくれる素敵な `find` コマンドでした。


この記事を書いた人

マスオさん

うなぎ

所 属:
WEBインテグレーション事業部
出身地:
愛知県
仕事内容:
開発