シェルスクリプトの覚書¶
Macで bash (or zsh)を使って賢く解析したい時に便利なコマンド等を書いておく.
任意の文字列(拡張子など)を持ったファイルをまとめてコピーしたい¶
find ./from_dir -name "tmp*.hoge" | xargs -t -I{} cp {} ./to_dir
./from_dirにあるtmp*.hogeという名前を持つファイルをto_dirにコピーする.
*はワイルドカード.
まとめてコンパイルしたい¶
find ./dir -name "tmp*.hoge" -type f | gawk -F/ '{print $NF}' | xargs -I {} root -l -q -b './src/program.cpp+("'{}'")'
findコマンドであるディレクトリ内のtmp*.hogeファイルを探す
garkコマンドでファイル名だけ引っ張り出す(ファイルパスごと引数にするにはこれを消す)
xargsコマンドで上記ファイル名を引数として{}に渡す
rootコマンドで実行,これはc++などでも良し.
ファイルへのアクセス権限を644(rw-r--r--)にしたいけど,ディレクトリの権限は755にしたい¶
find /path/to/dir -type d -exec chmod 755 {} +
find /path/to/dir -type f -exec chmod 644 {} +
改行コードを変える¶
tr -d "\r" <windows.txt >unix.txt
個人的にはnkfコマンドの方が使いやすい
brewで入れれる
nkf -Lu abcd.txt > abcd_crlf.txt キャストする
nkf -Lu --overwrite abcd.txt 上書きする
nkf --guess abcd.txt 文字コード確認
ディレクトリごとの容量を確認する¶
du -h -d 1 . | sort -h -r
-hで単位を見やすくする
-d 1で1階層だけ深いところまで表示(集計はする)
.でディレクトリを指定
最後にパイプ処理で容量の大きい順に並び替える
#final update
!date '+%b %d %Y (%a)'
12 21 2022 (水)