Masaの備忘録 - Shell,Unixコマンド
Shell,UnixコマンドのTips【目次】

基礎事項

ファイル関連

数値演算・比較 関連

小技

ディレクトリ数を調べる

grepとwcコマンドを利用しディレクトリ数を調べる

コマンド
ls -l | grep ^d | wc -l

上記のコマンドの意味
  • ls -l でカレントディレクトリのファイルおよびディレクトリ一覧を表示する
  • grep ^d で最初がdからはじまる情報のみを表示する。つまり、ディレクトリのみを表示する
  • wc -l で表示された行数を出力する



ファイル数を調べる(ディレクトリを除く)

grepとwcコマンドを利用しディレクトリ数を調べる

コマンド
ls -l | grep ^- | wc -l (隠しファイルを除く場合)
ls -al | grep ^- | wc -l (隠しファイルも含む場合)

上記のコマンドの意味
  • ls -lによりカレントディレクトリのファイルおよびディレクトリ一覧を表示する
  • grep ^-により最初が-からはじまる情報のみを表示する。つまり、ファイルのみを表示する
  • wc -l で表示された行数を出力する



一度に階層が深いディレクトリを作成する

mkdirコマンドで-pオプションを用いる。

例えば、
test/hoge/hogehoge
という階層のディレクトリを作りたいとき、普通なら以下のコマンドを入力し、ディレクトリを作成する。
mkdir test
cd test
mkdir hoge
cd hoge
mkdir hogehoge
しかし、上記の方法でいちいちディレクトリを作成するのは面倒だ!!

こういうときは、以下のようにmkdirコマンドに-pオプションをつけると一度に階層の深いディレクトリも作成できる。
mkdir -p test/hoge/hogehoge




lsコマンドの様々なソート方法

(1)拡張子のアルファベット順でソート
拡張子でソートするには -X オプションを使用する。
ls -lX

(2)更新日時の新しいもの順でソート
ls -lt

(3)更新日時の古いもの順でソート
ls -ltr

(4)自然数でソート
ls -lv

(解説)
ls -l コマンドでフォルダ一覧を表示すると以下のように表示される。
$ $ls -l
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder1
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder10
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder2
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder3
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder4
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder5
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder6
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder7
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder8
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder9
$ $

上記の場合は、folder1の次にfolder10が表示されてしまう。

これを -v オプション を用いて自然数でソートすると、
$ $ls -lv
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder1
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder2
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder3
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder4
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder5
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder6
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder7
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder8
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder9
-rw-r--r-- 1 masa masa 0 2012-05-05 13:18 folder10
$ $

上記のようになり、きちんと自然数でソートされる。


(5)アクセス時刻でソートする
ls -lu

(6)逆順にソートする
ls -lr

(7)ファイルサイズ順にソート
ls -S

(8)ソートせずにディレクトリに置かれているもの順
ls -lU

参考サイト


lsコマンドで(ファイル or ディレクトリ)のみを表示する

grepコマンドを利用し、ファイルのみ,またはディレクトリのみを表示する。

コマンド
ls -F | grep / (ディレクトリのみを表示)
ls -F | grep -v / (ファイルのみを場合)

参考サイト


livedoor Wiki関連リンク