Linux入門 3-4 ファイルの配置と検索

[](参照ソース)
[Udemyの動画講座]:https://www.udemy.com/course/linuxlpic/?utm_source=bene-content-marketing&utm_campaign=normal&utm_content=story&utm_term=career&utm_medium=udemyads
[Linux入門 3-3]:https://qiita.com/hoglet/items/540afd7d7fb8ae368487
[Linux入門 3-5]:https://qiita.com/hoglet/items/d6f97403e3e90283e742

# はじめに
Linux初学者である自分向け用の記事です。[Udemyの動画講座]を参考にしました。
僕の勉強法は`動画を見る`→`実際に動かしてみる`→`問題演習`という流れです。

前回まで：[Linux入門 3-3]

***
# 3. LinuC 101 Ver .10.0(問題、テスト、演習)
## ファイルの配置と検索
```
用語: find, locate, updated, whereis , which, type, /etc/updatedb.conf
```

### find
ディレクトリ、ファイルを検索するコマンド
-name: 指定した文字列を含むファイルを検索

```s
[root@localhost 4]# ls 1/
file1.txt  file2.txt  file3.txt  file4.txt
[root@localhost 4]# find ./ -name file1.txt
./1/file1.txt
[root@localhost 4]# find / -name file1.txt
/home/test/le01/4/1/file1.txt
```

-type: ファイルのタイプで検索（f: ファイル、d: ディレクトリ、l: シンボリックリンク)

```s
[root@localhost 4]# find ./ -type f
./1/file1.txt
./1/file2.txt
./1/file3.txt
./1/file4.txt
```

-exec `コマンド` {} ¥; : 検索結果のファイルにコマンド実行

```s
[root@localhost 4]# ls 1/
file1.txt  file2.txt  file3.txt  file4.txt
[root@localhost 4]# find ./ -mtime +1 -type f
./1/file3.txt
./1/file4.txt
[root@localhost 4]# find ./ -mtime +1 -type f -exec rm {} \;
[root@localhost 4]# ls 1/
file1.txt  file2.txt
```

### which
指定したコマンドの存在するディレクトリの表示

```
[root@localhost 4]# which vi
/usr/bin/vi
```

### locate
データベースを元にファイルを検索(`updatedb`コマンドでデータベースを更新(/etc/updatedb.confにupdatedbの設定を記載))。find より高速。

`mlocate`というライブラリをインストールする必要あり。

```s
[root@localhost ~]# yum install mlocate
```
次に`updatedb`コマンドを実行する必要がある

```
[root@localhost ~]# updatedb
```

これで、`locate`コマンドが使用可能になった

```s
[root@localhost ~]# locate "*.txt"
/home/test/le01/01/test.txt
/home/test/le01/03/test_bk.txt
/home/test/le01/03/test_hard.txt
/home/test/le01/03/test_symbolic.txt
/home/test/le01/4/1/file1.txt
/home/test/le01/4/1/file2.txt
/usr/lib/firmware/TDA7706_OM_v2.5.1_boot.txt
...
```

### whereis
指定したコマンドのバイナリ、ソースファイル、マニュアルの存在位置を表示するコマンド

```s
[root@localhost ~]# whereis updatedb
updatedb: /usr/bin/updatedb /etc/updatedb.conf /usr/share/man/man8/updatedb.8.gz
```

### type
コマンドの情報を表示する

```s
[root@localhost 4]# type echo
echo はシェル組み込み関数です
[root@localhost 4]# type ls
ls は `ls --color=auto' のエイリアスです
[root@localhost 4]# type for
for はシェルの予約語です
```

### 代表的なファイルシステムに格納されているもの
```
/dev : ハードディスク、 DVD ROM などのデバイスファイル
/etc : システム、コマンドなどの設定ファイル
/lib : 共有ライブラリやモジュール、 /bin, /sbin にあるコマンドが利用するライブラリ
/opt : 追加パッケージや追加プログラム
/root : root ユーザのホームディレクトリ
/bin : 一般ユーザが実行できるシステムコマンド (ls, cat 等
/sbin : root ユーザの使用するシステムコマンド (reboot 等
/usr : ユーザが共有するコマンド
/usr/bin : 一般ユーザと root ユーザが使用する基本コマンド
/usr/sbin : root ユーザが使用する基本コマンド
/usr/lib : プログラムの共有ライブラリ
/usr/local : 個人で作成したコマンドなど
/usr/src : Linux のカーネルソースなどのソースコード
/media : DVD ROM などのリムーバブルメディアのマウントポイント
/mnt : 一時的にマウントするファイルシステムのマウントポイント
/proc : カーネル内部の情報にアクセスする
/tmp : 一時ファイルが配置され、すべてのユーザ が読み書きできる
/home : 各ユーザーが利用する専用のホームディレクトリ
/boot : 起動に必要なカーネルイメージ
/var : ログファイルなどの頻繁に書き込まれるファイル
/var/cache : 一時的なキャッシュファイル
/var/lock : アプリケーションを制御するためのロックファイル
/var/log : ログファイル
/var/run : システムの状態を示すファイル
/var/spool : 印刷待ちのデータ、予約されたジョブ
```
マウントポイントとは 新規ファイルシステム、ディレクトリー、またはファイルをアクセス可能にするディレクトリーまたはファイルのことです。
例えば、DVD ROM などの HW が接続された場合に、 OS の SW 上からアクセスするためにファイルとして認識する。これをマウントと言う。




*To Be Continued...*
[Linux入門 3-5] へ
***