MacOSX コマンドメモ

created at 2019-08-22 11:57+0900

MacOSXのUnix系コマンドはオプション指定などが、他のUnix系OSやLinuxとはちょと異なることがあるので要注意!!

find

このディレクトリ以下は探索しないオプション -prune の使用例。( 探索しない条件 -and -prune ) を並べておいて、最後に -or ( 探索したい条件 -and -print ) を書く。

sudo find / \( -type d -and -path "/Volumes" -and -prune \) -or \( -type d -and -path "/private/var" -and -prune \) -or \( -type d -and -path "/dev/fd" -and -prune \) -or \( -type d -and -name ".git" -and -print \)


sudo find / \( -type d -and -path "/Volumes" -and -prune \) -or \( -type d -and -path "/private/var" -and -prune \) -or \( -type d -and -path "/dev/fd" -and -prune \) -or \( -name "git-core" -and -print \)

最終更新日時を指定して検索する例。4週間前から3日前まで(4w < 探したいファイルの最終更新日時 < 3d かな?)。 境目がわかりづらいのでざっくり探すとき用。厳密に探したいときはダミーファイル作る方がいいのかな?

find ./D* -name "*" -type f -mtime -4w -mtime +3d -print

sed

文字列置換の例

sed -i '.bak' -e 's/hoge/moga/g' poem.txt
-i <extension>

バックアップファイルの拡張子を指定する。

-e <command>

指定したコマンドを実行する。

grep

指定したパターンを含むファイルを検索する例。ついでに該当したファイルに対して置換をかける例。

grep -R -l -E 'hoge' . | xargs sed -i '.bak' -e 's/hoge/moga/g'
-R, -r, --recursive

サブディレクトリを再帰的に検索する

-l, --files-with-matches

(小文字のエル)検索結果としてファイル名のみ出力する。1つのファイル内に該当箇所が複数ある場合でも出力されるのは1回だけ。

-E, --extended-regexp

パターンを拡張正規表現として解釈する。

-I

(大文字のアイ)バイナリファイルをシカトする。

-i, --ignore-case

大文字と小文字を区別しない。

bzip2

圧縮する

bzip2 -zk hoge.txt

解凍する前に中身を見たい

bzcat hoge.txt.bz2

解凍する

bzip2 -dk hoge.txt

bzip2でtarアーカイブを圧縮する

tar cjf hoge.tar.bz2 hoge.txt

bzip2で圧縮したtarアーカイブを解凍する

tar xjf hoge.tar.bz2

du

ルートから5階層下までのフォルダの容量を確認し、容量が5GB以上のフォルダを抽出する

sudo du -g -x -d 5 / | awk '$1 >= 5{print}'