for; do; done と mv コマンドを組み合わせてファイル名を一括で変換する事ができます。
for F in {対象ファイルのパス}; do mv $F {先頭に追加したい文字列}$F\{後尾に追加したい文字列}; done;
for F in {対象ファイルのパス}; do mv $F ${F/{変更したい文字列}/{変更後の文字列}}; done;
コマンドが長くなるので、以下のように関数にまとめて .~shrc
に登録して置くと便利です。
frnm() {
if [ $# -gt 1 ]; then
for F in *; do mv $F ${F/$1/$2}; done;
return $?
else
echo 'usage: frnm <pattern> <replacement>'
return 1
fi
}
ファイル中の文字列を一括変換するコマンドです。機能的にはテキストエディタの文字列変換と変わりませんが、複数の対象ファイルを指定する事ができますす。
sed -i '' -e 's/{変更したい文字列}/{変更後の文字列}/g' {対象ファイルのパス}
現在のディレクトリの「tx」拡張子の全ファイルからAVA_HOSTを SGI_HOSTに変換する例
sed -i '' -e 's/AVA_HOST/SGI_HOST/g' *.tx
Git Grep と一緒に使うと特定の文字列が含まれているファイルのみ自動で検索して、同時に変換する事ができます。
git grep -l {検索したい文字列} {検索範囲} | xargs sed -i '' -e 's/{変更したい文字列または正規表現}/{変更後の文字列}/g'
検索範囲を指定しなかった場合は現在のディレクトリが検索範囲になります。
コマンドが長くなるので、以下のように関数にまとめて .~shrc
に登録して置くと便利です。
gfnd() {
if [ $# -gt 0 ]; then
git grep "$@"
return $?
else
echo 'usage: gfnd <pattern>'
return 1
fi
}
grpl() {
if [ $# -gt 1 ]; then
git grep -l $1 | xargs sed -i '' -e 's/'$1'/'$2'/g'
return $?
else
echo 'usage: grpl <pattern> <replacement>'
return 1
fi
}
誤って git stash drop しちゃった場合の復旧方法
消えちゃった stash のコミットハッシュを探す。
復旧したい stash のコミットハッシュ指定して ↓ こうする。