git filter-branch で特定のファイルだけを残すのは find 内完結の方が良い ― 2019年01月29日 13時14分09秒
そこで、-exec を使って若干完結化。
find の -exec を \; で終らせると、コマンドは各一つづつのファイルに対してコマンドが実行され、\+ だと、複数の対象ファイルに対してコマンドが実行される様になる。
% git filter-branch --tree-filter 'find * ! -type f -name "*.sh" -type f -exec rm {} \+' --prune-empty
一番ややこしかったのが、文字列のエスケープ。filter-branch に渡すコマンドが一段回展開されてしまうので、普段の要領で find を使うと何処にバックスラッシュをつけるのかがこんがりやすい。
最近のコメント