作曲・浄書・指導・音響

金沢音楽制作

金沢音楽制作では、楽曲・楽譜の制作と、作曲や写譜などレッスンを行っています。

ディレクトリ名だけを取得する

ディリクトリ名だけを取得するためのメモ。

grepを利用する

下に色々と書いたが、lsとgrepだけで目的は達成できる。lsの引数に-Fをつけると、ファイル名の末尾にタイプが表示される。ディレクトリならば「/」、実行ファイルならば「*」、シンボリックリンクならば「@」、そして末尾になにもつかない物が通常ファイルだ。あとはこの結果をgrepにわたすだけである。

$ ls -F
vimrc@
Desktop/
Downloads/
Dropbox/
gdrive-beta.sh*
hkmc.jp_bk
n49.html
n50.html
note/
works/

grepは、マッチしたパターンを除外する-vオプションがコツである。例えば、通常ファイルのみ表示させたい場合は、ファイルの末尾につけられた「/*@」の記号をマッチさせ、それを除外させればよい。

$ ls -F | grep -v'[/*@]$'
hkmc.jp_bk
n49.html
n50.html

sedを利用する

ここではlsとsed、awkをパイプライン(|)でつなぐ方法を示す。

a
$ ls -l
total 44
drwxr-xr-x  3 hase hase 4096 Nov 15 16:37 Desktop
drwxr-xr-x  5 hase hase 4096 Nov 15 20:14 Downloads
drwx------ 13 hase hase 4096 Oct  2 15:06 Dropbox
-rwxr-xr-x  1 hase hase 5573 Nov 15 16:10 gdrive-beta.sh
-rwxr-xr-x  1 hase hase 3357 Nov 17 00:38 n49.html
-rwxr-xr-x  1 hase hase 5981 Nov 17 00:38 n50.html
drwxr-xr-x  3 hase hase 4096 Nov 17 16:12 note
drwxr-xr-x  7 hase hase 4096 Nov  9 22:38 works

ls -lを実行すると、第1:フィールド(先頭)にファイル属性が表示される。drwxr-xr-xの先頭の一文字が形式を表している。「-」ならばファイル、「d」ならばディレクトリ、「l」ならばリンクだ。

lsの結果をパイプでsedに渡す。先頭がd(^d)で始まる行を対象として、最後の半角スペースまでの文字列(.* )を選択し置換する。そして指定した行(-n)だけをプリントすればよい(p)。sedでは色々な書き方があるので好きに書けばよい。

$ ls -l | sed -n  '/^d/s/.* \(.*\)/\1/p'
$ ls -l | sed -n '/^d/s/.* //p'
$ ls -l | sed -n 's/^d.* //p'
Desktop
Downloads
Dropbox
note
works      

awkを利用する

AWKを利用すると、スペースで区切られたフィールドを簡単に抽出することができる。ディレとクリの場合は、先頭がd(^d)で始まる行を対象として、第9フィールド($9)を抽出する。使い方はsedに似ているが、より簡潔に記述することができる。

$ ls -l | awk '/^d/ {print $9}'
Desktop
Downloads
Dropbox
note
works      

[目次へ]

[ノート一覧へ]

更新情報

  • 公開日:2018-11-14
  • 更新日:2019-10-15
  • 更新日:2020-02-27