ファイル処理

目次:
●rotateされたログファイル等を一つのファイルに結合する
●特定の名前のディレクトリ以下を除外してファイル内を検索する
●動画からキャプチャした画像をタイル状に並べて一枚の画像に合成する。
●一括リネーム
●カレントディレクトリに任意のディレクトリ内のファイルのシンボリックリンクを一括作成
●ファイルを連番でリネーム


●rotateされたログファイル等を一つのファイルに結合する

$ (find . -name "xxxx.log.*" | sort -nr -t '.' -k3,3 | xargs -t cat) >> xxx.log

●特定の名前のディレクトリ以下を除外してファイル内を検索する

$ find . -type d -path "./lib" -prune -o -type f -name "*.css" -print | xargs -n 10 grep -E -n <pattern>

●動画からキャプチャした画像をタイル状に並べて一枚の画像に合成する。
(キャプチャ画像は幅200pxに縮小し4列で隙間を空けない)

$ montage caps*.png -geometry 200x+0+0 -tile 4x -monitor tile-caps.jpg

●一括リネーム

$ find . -type f -name 'pattern' | sed -e 'p;s/PATTERN/REPLACED/' | xargs -n2 mv

●カレントディレクトリに任意のディレクトリ内のファイルのシンボリックリンクを一括作成

$ find ./searchdir -type f -name 'pattern' | sed -n -r "p;s/(.+)/basename '\1'/ep" | xargs -n 2 ln -s

●ファイルを連番でリネーム or コピー
require perl >5.10

#リネーム
$ ls | perl -nlE 'm/(\.\w+)$/; say sprintf qq!"%s" "pattern-%02d$1"!,$_,$.;' | xargs -n2 mv

#コピー
$ ls | perl -nlE 'm/(\.\w+)$/; say sprintf qq!"%s" "pattern-%02d$1"!,$_,$.;' | xargs -n2 cp

●つづく