Dockerfile
を検索して、peco
に流して、そのフォルダに cd
するものを考えていたんですけれども、find
だと検索対象フォルダを絞らないと検索が遅くて使い物にならないなぁと思っていた矢先。
peco + spotlightで超高速にファイル名検索して開く - Qiita
を発見!これだー!
ということで、spotlight(mdfind)
を使ったやつを書いてみました。
.bashrc
peco-mdfind-cd() {
local FILENAME="$1"
if [ -z "$FILENAME" ] ; then
echo "Usage: peco-mdfind-cd <FILENAME>" >&2
return 1
fi
local DIR=$(mdfind -onlyin ~ -name ${FILENAME} | grep -e "/${FILENAME}$" | peco | head -n 1)
if [ -n "$DIR" ] ; then
DIR=${DIR%/*}
echo "pushd \"$DIR\""
pushd "$DIR"
fi
}
peco-docker-cd() {
peco-mdfind-cd "Dockerfile"
}
peco-vagrant-cd() {
peco-mdfind-cd "Vagrantfile"
}
$ peco-mdfind-cd "Dockerfile"
で、
-
Dockerfile
を検索し、 - 一覧を
peco
に渡し、 - 選択結果のフォルダに
cd
する
という流れです。
ちょっと名前が微妙ですが、alias
を設定するなり、ショートカットキーを設定するなりして下さいませw
.git
に対してもやりたかったんですけども、mdfind
が不可視属性のものを対象に出来ないようなので、ちょっと無理っぽいです。。
追記:
peco-find-cd() {
local FILENAME="$1"
if [ -z "$FILENAME" ] ; then
echo "Usage: peco-find-cd <FILENAME>" >&2
return 1
fi
local DIR=$(find ~ -maxdepth 5 -name ${FILENAME} | peco | head -n 1)
if [ -n "$DIR" ] ; then
DIR=${DIR%/*}
echo "pushd \"$DIR\""
pushd "$DIR"
fi
}
peco-git-cd() {
peco-find-cd '.git'
}
peco-docker-cd() {
peco-find-cd "Dockerfile"
}
peco-vagrant-cd() {
peco-find-cd "Vagrantfile"
}