Linuxコマンドを使ってディレクトリとファイルでやりたいことをやるためのリンク集



# 容量を確認したい

```bash
# 各ファイルシステム毎(-T)に人に見やすい単位表示(-h)でディスクの空き容量を表示する
$ df -Th

# 指定したディレクトリの合計容量を(-s)に人に見やすい単位表示(-h)で表示する
$ sudo du -sh /var
# 階層を指定してディレクトリの合計容量を(-s)に人に見やすい単位表示(-h)で表示する
$ sudo find /var/ -maxdepth 1 -type d -exec du -sh {} \;
```

- [duコマンドについてまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-du)
- [duコマンドでサブディレクトリを含めたディレクトリ容量を表示する。 - Qiita](https://qiita.com/isotai/items/8fafd01bd44f55673288)























# 中身を見たい
```bash
$ cat {ファイル名}

# 行番号をつけたい
$ cat -n {ファイル}

# 特定の文字の背景を反転させたい
$ less -p {特定の文字} {ファイル名}

# 文字化けするから文字コードを指定したい
$ iconv -f SJIS {ファイル名}



# ディレクトリにある任意の拡張子のファイルの行数などを一気にを見たい
$ wc *.tsv
# {行数} {空白で区切られた単語数} {ファイルのバイト数}
      389      5444     75633 hoge.tsv
       85      1781     41341 fuga.tsv
   385353   7316103  70377201 pon.tsv
   383155  12625841 175655410 chovi.tsv
   395722   8731030  81380479 tanu.tsv
   190171   4373795  39556093 hege.tsv
  1354875  33053994 367086157 total

```

- [Linux：出力結果やテキストをファイルに書き出す方法 | raining](http://raining.bear-life.com/linux/%E5%87%BA%E5%8A%9B%E7%B5%90%E6%9E%9C%E3%82%84%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E6%9B%B8%E3%81%8D%E5%87%BA%E3%81%99%E6%96%B9%E6%B3%95)
- [lessコマンドtips 任意の文字列を反転させる - Qiita](https://qiita.com/ine1127/items/64b5b6cf52471c3fe59c#%E4%BB%BB%E6%84%8F%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E5%8F%8D%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B)
- [catで行番号表示 - PukiWiki](http://www.lovebug.jp/index.php?cat%E3%81%A7%E8%A1%8C%E7%95%AA%E5%8F%B7%E8%A1%A8%E7%A4%BA)
- [ターミナルで SJIS の文字化けを避ける - Qiita](https://qiita.com/eggc/items/521808bb0668d18159bd)
- [wcコマンドについて詳しくまとめました 【Linuxコマンド集】](https://eng-entrance.com/linux-command-wc)

|iconvのオプション|意味|
|:--|:--|
|-f|入力の文字コードを指定する|

# コピーしたい
```bash
# 構文
$ cp [options] {コピー元} {コピー先}

# ファイル名そのままでコピー
$ cp {コピー元ファイルパス} {コピー先ディレクトリパス}

# サブディレクトリがあるディレクトリをコピー
$ cp -r {コピー元ディレクトリパス} {コピー先ディレクトリパス}

# 再帰的にできるだけ属性とディレクトリの構成を保持して、同名ファイルがあっても警告なしで上書きをする
$ cp -arf {コピー元ディレクトリ} {コピー先ディレクトリ}
```

|オプション|意味|
|:-:|:--|
|-a|できるだけ属性とディレクトリの構成を保持してコピー|
|-r|サブディレクトリもコピー|
|-R|Macでシンボリックリンクをシンボリックリンクのままコピー|
|-f|同じ名前のファイルがあっても確認しないでコピー|

- [ファイルやディレクトリをコピーするcpコマンドの使い方！【Linuxコマンド集】](https://eng-entrance.com/linux_command_cp)
- [コピーで「cp: omitting directory 'hoge'」エラー](http://keizokupw.seesaa.net/article/358217548.html)
- [cpコマンドでディレクトリを再帰的にコピーする時に気持ちが伝わらなすぎるのでcpコマンドでの失敗を記録してみた](https://qiita.com/ponsuke0531/items/660bcbf12e0692a49d12)



# 消し去りたい
```bash
# ログファイルを削除
$ rm {ログファイルがあるディレクトリパス}\*.log

# 空っぽのディレクトリ削除
$ rm -d {ディレクトリ}

# 中身もろともガッツリ削除
$ rm -rf {ディレクトリ}

# ディレクトリは残してファイル削除
$ find {ディレクトリ} -type f | xargs rm

# 名前の一部を指定してディレクトリ配下までファイル削除：なかったら何もしない
$ find {ディレクトリ} -type f -name {名前の一部} | xargs --no-run-if-empty rm

# パスに半角スペースが含まれるファイルをfindして任意の文字でgrepして一括削除する
$ find {ディレクトリ} -type f | grep -i {ファイル名の一部} | sed -e 's/ /\\ /g' | xargs rm
```
- [xargs で標準入力が空だったら何もしない - Qiita](https://qiita.com/m_doi/items/432b9145b69a0ba3132d)
- [パスに半角スペースが含まれるfindの結果をgrepしてxargsで削除する方法 - Qiita](https://qiita.com/ponsuke0531/items/f32fae15ed943a264b36)



# ディレクトリの配下を一覧化したい
```bash
# 名前だけ縦1列で見たい
$ ls -1
# 再帰的に見たい。
$ ls -R
# ディレクトリだけパスだけ一覧で見たい。
$ find {見たい場所} -type d
# 「.」で始まるファイル(ドット・ファイル)をみたい
$ ls -a
# 3階層目までのディレクトリ一覧が見たい
$ find -maxdepth 3 -type d
```

- [lsコマンド（ディレクトリ・ファイルの一覧表示）](https://www.garunimo.com/program/linux/ls.php)
- [ディレクトリの中を再帰的に全部を一覧表示するコマンド４種 - それマグで！](http://takuya-1st.hatenablog.jp/entry/2015/02/18/151623)
- [findコマンドで検索する階層を指定(maxdepth) | ubuntu | マイノリティでいこう](https://blog.be-dama.com/2015/01/20/find%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B%E9%9A%8E%E5%B1%A4%E3%82%92%E6%8C%87%E5%AE%9Amaxdepth/)
- [find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positionalとなった時の対応方法 - Qiita](https://qiita.com/ponsuke0531/items/cb9709bb15ace8b5f7eb)
- [lsコマンドで縦にファイル名だけならべる ~ プログラマの道具箱](http://programmernodougubako.blogspot.com/2012/10/ls.html)

# 差分を見たい
```bash
$ diff {ファイル名1} {ファイル名2}
# 再帰的に差分を見たい
$ diff –r {ディレクトリパス１} (ディレクトリパス２}
```

- [ファイルの差分を見る！diffコマンドの詳細まとめ【Linuxコマンド集】](https://eng-entrance.com/linux-command-diff#-r)
- [ディレクトリdiffでファイル名だけ表示 - Qiita](http://qiita.com/fieldville/items/cdee0a865728dc7dbdee)

# 〇〇コードが見たい
```bash
# 改行コードを調べたい
$ od -c {ファイルパス}
# 文字コードをみたい:特定ファイルのをみたい
$ nkf -g {ファイルパス}
# 文字コードをみたい:ディレクトリのを全部みたい
$ find {ディレクトリパス} -type f | xargs nkf -g
# 文字コードをみたい:特定ファイルのをみたい：BOM付きかどうかまで見たい
$ file {ファイルパス} 
{ファイルパス}: Bourne-Again shell script text executable, UTF-8 Unicode (with BOM) text

# base64エンコードしたい
$ echo -n 'ponsuke:tarou' | base64
cG9uc3VrZTp0YXJvdQ==
# MD5でハッシュ値を生成したい
$ echo 'tarou' | md5
961ed3c18a02b9b87bcd3efa9eb2a0a9
```

- [改行コードの確認 - Qiita](http://qiita.com/Dace_K/items/76a1873ed4ab327254b5)
- [Linux上のファイルの改行文字を確認する方法 - Miuran Business Systems](
http://www.m-bsys.com/linux/check-newline)
- [Base64エンコードしてみる方法 - Qiita](https://qiita.com/ponsuke0531/items/dfdd90654fbe7711a4ac)
- [文字コードと改行コード | UNIX &amp; Linux コマンド・シェルスクリプト リファレンス](http://shellscript.sunone.me/character_code.html)
- [[Mac] nkf を Homebrew でインストール | CodeNote](http://codenote.net/mac/homebrew/1747.html)
- [nkfコマンドをインストールする方法 - Qiita](https://qiita.com/ponsuke0531/items/d0b6d743a70c624a1ba7)
- [【メモ】コマンドでのBOMの追加・削除・確認 - Qiita](https://qiita.com/tamanugi/items/63fe5cf8e709565777a5)
- [md5ざっくりまとめ - Qiita](https://qiita.com/mogulla3/items/720c9c9731de0e906af2)

# 移動したい

```bash
$ mv {移動元} {移動先}
```

- [【Linuxでの移動】オプション含めて紹介！mvコマンドの詳細まとめ](https://eng-entrance.com/linux-basic-file)

# リネームしたい

```bash
$ mv {リネーム前} {リネーム後}

# 文字を置換してリネーム(unixにはないらしい)
$ rename {置換前文字} {置換後文字} {ファイル名}
```

- [Linuxでrenameコマンドを使おう - Qiita](https://qiita.com/yahihi/items/dd8b3cc7c7041c3f03b9)
- [【rename】Linuxでファイル名を一括変更するコマンド | UX MILK](http://uxmilk.jp/8366)

# 結合したい
```bash
$ cat {結合したいファイル} {結合したいファイル} > {結合したファイル}
```

- [ファイルを結合するには](http://www.atmarkit.co.jp/flinux/rensai/linuxtips/155convnfile.html)
- [catでファイルを連結するとき・・ - Qiita](http://qiita.com/tanaka-kj/items/761cc6fcc6cba0159ab0)
- [Linuxコマンド一覧 [cat]](http://www.k4.dion.ne.jp/~mms/unix/linux_com/cat.html)


# 圧縮と解凍したい
- [[Linux]ファイルの圧縮、解凍方法 - Qiita](http://qiita.com/supersaiakujin/items/c6b54e9add21d375161f)

## tar

```bash:圧縮と解凍したい
# 圧縮したい
$ tar -cvf {アーカイブファイル名} {圧縮するもの}

# 解凍したい
$ tar -xvf {アーカイブファイル名}
# 解凍したい(展開先を指定)
$ tar -xvf {アーカイブファイル名} -C {展開先ディレクトリ}

```

|オプション|意味|関連リンク|
|:-:|:--|:--|
|-c|圧縮ファイルを新規に作成する||
|-C|指定したディレクトリに移動してから動作を始める||
|`-f {ファイルパス}`<br/>`--file {ファイルパス}`|圧縮ファイルを指定する||
|`-v`<br/>`--verbose`|ファイルの一覧を表示する||
|-x|圧縮ファイルからファイルを取り出す||
|`r`|書庫の後部にファイルを追加する|[Linuxコマンド集 - 【 tar 】 ファイルを書庫化・展開する（拡張子.tarなど）：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230896/?rt=nocnt)|

- [tarしたらThis does not look like a tar archiveとなったときの対応方法 - Qiita](https://qiita.com/ponsuke0531/items/5d429aef811512463151)
- [tar (child): cannot run bzip2: No such file or directory - Qiita](https://qiita.com/ponsuke0531/items/f2510cd69bad77432de2)
- [tar コマンド | コマンドの使い方(Linux) | hydroculのメモ](https://hydrocul.github.io/wiki/commands/tar.html)



## zip

```bash
# ZIPファイルを解凍したい
$ unzip {アーカイブファイル名}.zip

# 場所を指定して解凍したい(うっかり場所を指定しないで解凍すると現在地に解凍されてしまいます。)
$ unzip {アーカイブファイル名}.zip -d {解凍先ディレクトリパス}

# 日本語のファイル名が入っているZIPファイルを解凍したい
$ unzip -O sjis {アーカイブファイル名}.zip

# 複数zipファイルを一括で回答する
$ find {zipファイルが格納されているディレクトリ} -name '*.zip' | xargs -n1 unzip -d {解凍先のディレクトリ}
```

- [unzipコマンドで日本語が文字化けした際の文字コード指定 - Qiita](https://qiita.com/daijinload/items/c2e5d3c7c62c3866ae07)
- [unzipで複数ファイルを一括解凍 - Scribble](https://scribble.washo3.com/linux/unzip%E3%81%A7%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%80%E6%8B%AC%E8%A7%A3%E5%87%8D.html)
- [パスワード付き複数のzipファイルを各zipファイルと同じ場所に解凍する方法 - Qiita](https://qiita.com/ponsuke0531/items/4d82cf3c6265d14992a6)

# 編集したい
```bash:編集したい
# ざっくり構文
$ sed [オプション] [対象ファイル]

# 文字列を削除したい(-i:対象のファイルを上書き更新)
$ sed -i 's/文字列//g' target.txt

# 文字の置換をしたい
$ sed -i 's/{置換前文字列}/{置換後文字列}/g' {ファイルパス}
```

- [sed コマンド | コマンドの使い方(Linux) | hydroculのメモ](https://hydrocul.github.io/wiki/commands/sed.html)
- [メタ文字の一覧 > sed | テキストの置換処理を得意とするスクリプト言語](https://bi.biopapyrus.jp/os/linux/sed.html)
- [使っている sed コマンドが GNU版 か BSD版 か確認する方法 - Qiita](https://qiita.com/ponsuke0531/items/a264a7be2beb189cfccb)
- [sedでディレクトリ配下のファイルにある「特定文字の直後にある大文字を小文字にする」方法 - Qiita](https://qiita.com/ponsuke0531/items/11e3cf9806f5e00b78cd)
- [macOS High Sierraでsedで上書き更新しようとして-iオプションを付けて実行したらsed: 1: &quot;ファイルパス&quot;: invalid command code mとなったときの対応方法 - Qiita](https://qiita.com/ponsuke0531/items/be8b4a3c5e19676f9691)
- [Windowsのsedで置換して変わった改行コードをLFからCRLFに戻す方法 - Qiita](https://qiita.com/ponsuke0531/items/222abdb044bcebcc0379)
- [CSVファイルの行頭に行番号を入れる方法 - Qiita](https://qiita.com/ponsuke0531/items/8234a130aa70f4a84ccc)

# 内容をソートしたい

```bash
$ sort [オプション] {ソート前ファイル} > {ソート後ファイル}
```

- [sortコマンド、基本と応用とワナ - Qiita](http://qiita.com/richmikan@github/items/cc4494359b1ac2f72311)
- [sortコマンドについて詳しくまとめました 【Linuxコマンド集】](http://eng-entrance.com/linux-command-sort)
- [テンポラリファイルを作らずに sort|uniq でファイルを上書きする方法 - わからん](http://d.hatena.ne.jp/kitokitoki/20120129/p1)
- [Linuxコマンド集 - 【 uniq 】 ソート済みのファイルから重複した行を削除する：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230918/)

# 空ファイルを作りたい

```bash
$ touch {ファイル名}
$ echo -n > {ファイル名}
```

- [空のファイルを作る２つの方法 - Qiita](http://qiita.com/kaw/items/3bbd6c2da1dde92bd8e5)
- [Linuxコマンド集 - 【 touch 】 ファイルのタイム・スタンプを変更する：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230905/?rt=nocnt)
- [ファイルサイズを指定してファイルを作る方法 - Qiita](https://qiita.com/ponsuke0531/items/02e041f3a81b01f1b8b4)

# 他のことをやりたい
- [Linuxコマンドでやりたいことをやるためのリンク集 - Qiita](https://qiita.com/ponsuke0531/items/73895dcdbb5ddd7d3331)
- [Linuxコマンドでとにかくいろいろ探したい時のリンク集 - Qiita](https://qiita.com/ponsuke0531/items/73817238d5d49a3dd449)