シェルスクリプトの覚書¶
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 (水)