シェル覚え書き

## ファイルのリストアップ
### ディレクトリのみを１階層だけリストアップ
findコマンドが使える。リストアップしたいディレクトリが入っているディレクトリのパスをfindの位置引数として指定し、オプションをそのあとに続ける。

例えばカレントディレクトリにあるディレクトリのうち、ディレクトリ名に 'vae' と入っているディレクトリを、1階層だけリストアップするには次のようにする。

```bash:
> find . -maxdepth 1 -type d -name '*vae*'

./00_vae128_zdim1_seed1_smallbeta
./00_vae128_zdim2_seed1_smallbeta
./00_vae128_zdim3_seed1_smallbeta
./00_vae128_zdim4_seed1_smallbeta
./00_vae128_zdim5_seed1_smallbeta
./00_vae128_zdim6_seed1_smallbeta
./00_vae128_zdim7_seed1_smallbeta
./00_vae128_zdim8_seed1_smallbeta
./00_vae128_zdim9_seed1_smallbeta
./00_vae128_zdim10_seed1_smallbeta
```

`-maxdepth 1`でディレクトリツリーを最大1階層しか辿らないことを、`-type`でファイルの種類を示している。`-name`でファイル絞り込みのためのワイルドカード文字列を指定できる。

※ -maxdepthと-typeの指定の順番を逆にすると以下のような警告が出てくる。

```
find: 警告: オプションでない引数 -type の後に -maxdepth オプションを指定しました。しかし位置オプションではありません (-maxdepth は前に指定しても後に指定してもテストに影響を及ぼします)。オプションは他の引数の前に指定してください。
```

### タイムスタンプでソートしてリストアップ
`ls -lt`で降順、`ls -ltr`で昇順ソートされる。

```bash:
> ls -lt *.tif | head
-rwxrwxrwx 1 1026 users 203979620 Nov  4 09:05 211101_A-3_Ca_478-9_009.tif
-rwxrwxrwx 1 1026 users 206461624 Nov  4 09:05 211101_A-3_Ca_478-9_008.tif
-rwxrwxrwx 1 1026 users 207879680 Nov  4 09:04 211101_A-3_Ca_478-9_007.tif
-rwxrwxrwx 1 1026 users 208669668 Nov  4 09:04 211101_A-3_Ca_478-9_006.tif
-rwxrwxrwx 1 1026 users 208702608 Nov  4 09:04 211101_A-3_Ca_478-9_005.tif
-rwxrwxrwx 1 1026 users 207961504 Nov  4 09:03 211101_A-3_Ca_478-9_004.tif
-rwxrwxrwx 1 1026 users 201963510 Nov  4 09:03 211101_A-3_Ca_478-9_003.tif
-rwxrwxrwx 1 1026 users 195543392 Nov  4 09:03 211101_A-3_Ca_478-9_002.tif
-rwxrwxrwx 1 1026 users 207846782 Nov  4 09:02 211101_A-3_Ca_478-9_001.tif
-rwxrwxrwx 1 1026 users 193915162 Nov  4 08:56 211101_A-3_Ca_478-5_009.tif

> ls -ltr *.tif | head
-rwxrwxrwx 1 1026 users 206022970 Nov  1 16:15 211101_A-3_Ca_120-1_001.tif
-rwxrwxrwx 1 1026 users 207303166 Nov  1 16:15 211101_A-3_Ca_120-1_002.tif
-rwxrwxrwx 1 1026 users 207240810 Nov  1 16:15 211101_A-3_Ca_120-1_003.tif
-rwxrwxrwx 1 1026 users 206921152 Nov  1 16:16 211101_A-3_Ca_120-1_004.tif
-rwxrwxrwx 1 1026 users 207044330 Nov  1 16:16 211101_A-3_Ca_120-1_005.tif
-rwxrwxrwx 1 1026 users 206776298 Nov  1 16:16 211101_A-3_Ca_120-1_006.tif
-rwxrwxrwx 1 1026 users 206934752 Nov  1 16:16 211101_A-3_Ca_120-1_007.tif
-rwxrwxrwx 1 1026 users 206703722 Nov  1 16:17 211101_A-3_Ca_120-1_008.tif
-rwxrwxrwx 1 1026 users 207168048 Nov  1 16:17 211101_A-3_Ca_120-1_009.tif
-rwxrwxrwx 1 1026 users 208477980 Nov  1 16:19 211101_A-3_Ca_120-2_001.tif
```

## テキストファイルの分割
### N個のファイルに分割
```bash:
> split -n l/3 --additional-suffix=.txt task_autorefine_210613_01.txt task_autorefine_210613_01

> ls -1 task_autorefine_210613_01*
task_autorefine_210613_01.txt
task_autorefine_210613_01aa.txt
task_autorefine_210613_01ab.txt
task_autorefine_210613_01ac.txt
```
-n にN(分割数)のみ与えると、ファイルのバイト数だけ見て分割するため、行の途中でも分割されてしまう。それを避けるには l/N の書式で分割数を指定する。

元ファイル名だけ与えると出力ファイル名は aa ab ac ... のようになってしまうが、コマンドの一番最後にプレフィックス名を与え、加えて--additional-suffixも指定すれば上記のようなファイルが生成される。


## ディスク容量、使用量のチェック
### duコマンド
#### カレントディレクトリ以下のディスク使用量チェック
```bash:
> du -h -d 1
687G    ./projects
0       ./imports
687G    .
```
-d は depth で、N階層下まで小分けに表示してくれる。


## ファイルのフルパスの表示
### readlink -f
```bash:
> ls
hoge

> readlink -f hoge
/data1/kttn/tmp/hoge
```