ワンライナー置き場
- 連番フォルダを一括リネームするワンライナー
for f in *; do mv '$f' `echo $f | sed "s/[^0-9]*\([0-9][0-9]\).*/\1/"`; done
この例では2桁の連番フォルダ
perlで似たことfind . -name \*\.bak | perl -nle '$o=$_;s/\.bak$//;rename $o,$_'
- 特定の名前のファイルを一括削除するワンライナー [#r6c0aa29]
find ./ -name ".svn" -exec rm -rf {} \;
Thumbs.dbとかに有効
phpでOne Liner
- 例1
$ php -r 'echo "HelloWorld!";'
- 例2
$ ls -l bin/php-5.* | php -B '$sum=0;' -R '$vals=preg_split("/\s+/",$argn);$sum+=$vals[4];' -E 'echo "Total size of files: ", $sum, "\n";'
- 例2
引用元:http://d.hatena.ne.jp/hnw/20090621
- 移動はrename関数
Tips
- 多重起動しない
[ $$ = $(pgrep -fo $0) ] || exit
- 標準ERROR出力のみをpipe(bashの場合)
command 2>&1 1>/dev/null | command
- stdout と stderr をともにpipe
command 2>&1 | command
- ファイル名やフルパスからその部分を求める
http://www.kishiro.com/FreeBSD/get_filename_in_shellscript.html
その心は、
- ${parameter%word}
- 最短後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。パラメータ parameter の右から、パターンに一致する最短の部分を削除した文字列に置換されます。
- ${parameter%%word}
- 最長後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。パラメータ parameter の右から、パターンに一致する最長の部分を削除した文字列に置換されます。
- ${parameter#word}
- 最短前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。パラメータ parameter の左から、パターンに一致する最短の部分を削除した文字列に置換されます。
- ${parameter##word}
- 最長前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。パラメータ parameter の左から、パターンに一致する最長の部分を削除した文字列に置換されます。
引用元
参考
- trim
| sed 's/^ *\(.*\) *$/\1/'
- フィールドセパレータの設定(' 'いりのファイルを正しく区切る)
IFS=" "
orIFS=\
- 処理時間計測
START=`date +%s` <process> END=`date +%s`
SS=`expr ${END} - ${START}` HH=`expr ${SS} / 3600` SS=`expr ${SS} % 3600` MM=`expr ${SS} / 60` SS=`expr ${SS} % 60` echo "${HH}:${MM}:${SS}"
- jotとseq
macにはseqがないという驚くべき事態なので、かわりにjotを使う。jotの方が文字列を扱えたりと、拡張されている。seq begin end = jot end-begin+1 begin
参考リンク
http://www.commandlinefu.com/commands/browse
http://d.hatena.ne.jp/hnw/20090621
http://docs.php.net/manual/ja/features.commandline.php