Используя zsh, с setopt EXTENDED_GLOB
, использование ~
оператор (кроме)
rm -- *~(x|y|z)
или ^
оператор (отрицание):
rm -- ^(x|y|z)
Но, необходимо, вероятно, вместо этого переместить файлы в другое место, затем удалить все. Это намного более безопасно с точки зрения промахов пальца, таково как удар, входят слишком скоро.
Можно усилить функцию оболочки, чтобы предоставить Вам эту способность по мере необходимости:
change() { path=`pwd`; cd `echo $path | sed "s/$1/$2/"`; }
Который назвали бы от/foo/bar/как:
change "bar" "gazi"
Обратите внимание на то, что "не требуются для этого примера, но требовался бы для специальных строк, таких как каталоги с пробелом (пробелами) на имя.
cd ../../bar/baz/yyyyy
cd $(echo $PWD | sed 's|foo|bar/baz|')
Второй выглядит "более прохладным", но первый короче.
В zsh: cd foo bar
В ударе: cd `zsh -ci 'cd foo bar'`
который может быть сокращен к `zsh -ci 'cd foo bar'`
под shopt -s autocd
в ударе ≥4. Добавьте двойные кавычки вокруг одинарных левых кавычек если получающееся. Это только работает, если zsh печатает каталог без ~
сокращения; альтернативно, zsh -c 'cd foo bar;pwd'
печатает путь с сокращениями, но он начинает становиться длинным.
В ударе Вы могли записать обертку вокруг cd
встроенный, который эмулирует zsh поведение.
cd () {
local -a opts
opts=()
while [[ $1 = -* ]]; do opts=("${opts[@]}" "$1"); shift; done
if [[ $# -eq 2 ]]; then
set -- "${PWD/$1/$2}"
fi
if [[ ${#opts[@]} -ne 0 ]]; then
set -- "${opts[@]}" "$@"
fi
builtin cd "$@"
}
cd `zsh -ci 'cd foo bar'`
- Я очень удивлен этим по некоторым причинам.
– Random832
19.08.2013, 21:03
Asuming Вы изменились на /xxxxx/foo/yyyyy
с cd /xxxxx/foo/yyyyy
и хочу измениться непосредственно после этой команды к другому каталогу Вы могли использовать !!:s/foo/bar\/baz/
. Что означает, повторите последнюю команду, но замену foo
с bar/baz
.
Когда Вы выполнили некоторые команды между двумя cd
s, Вы могли использовать !cd:s/foo/bar\/baz/
. Средства Whichs, повторитесь в последний раз cd
команда и замена.
Еще для некоторых примеров и команд истории, смотрите на Справочник Bash.
Для добавления к этому понятию использования истории я рекомендую изучить pushd и команды popd в ударе, который может очень легко переключиться между сохраненными каталогами. Ссылка блога является также очень хорошим ресурсом для других методов переключения каталога, включая комментарии, как сделать это в рамках сценария.
function cdd(){ cd ${PWD/$1/$2}; }
к моему.bashrc
.Спасибо! – Xavier Nodet 06.01.2011, 17:03/foosomething/foo
в/bar/bazsomething/bar/baz
. – svick 06.01.2011, 18:48