С ksh93
(в OS / X доступен как ksh
):
rmdir {4}(\d)_\1
(будьте осторожны, он может удалить каталог с именем {4} (\ d) _ \ 1
, если нет файла, соответствующего этому шаблону).
С zsh
(в OS / X доступен как zsh
):
setopt extendedglob
rmdir [0-9](#c4)_[0-9]##(/e:'[[ ${REPLY%_*} = ${REPLY#*_} ]]':)
(этот вариант также имеет то преимущество, что учитываются только файлы типа , каталог с использованием квалификатора glob /
выше).
С bash
или другой оболочкой POSIX (например, sh
большинства систем, включая OS / X
):
set -- [0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]
for f do
[ "${f#*_}" = "${f%_*}" ] && set -- "$@" "$f"
shift
done
rmdir "$@"
(будьте осторожны, это может удалить каталог вызывается [0-9] [0-9] [0-9] [0-9] _ [0-9] [0-9] [0-9] [0-9]
, если есть в текущем каталоге нет файлов XXXX_XXXX
).
Используя find
и grep
:
find . ! -name . -prune -type d -name '[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]' |
grep -x '\./\(.*\)_\1' |
xargs rmdir
С BSD найдите
(как найдено в OS / X):
find . -maxdepth 1 -regex './\([0-9]\{4\}\)_\1' -type d -delete
С GNU найдите
(обычно не встречается в OS / X, если не установлен через macports / homebrew / fink ...):
find . -maxdepth 1 -regextype grep -regex './\([0-9]\{4\}\)_\1' -type d -delete
ksh93
:
set -o globstar
rmdir - ** / {4} (\ d) \ 1
(имейте в виду, что он не удалит 1111_1111
, если есть 1111_1111 / 2222_2222
, так как он попытается сначала удалить 1111_1111
, что не может в нем есть каталог 2222_2222
, ksh93
не имеет квалификатора od
glob (для порядка глубины) zsh
)
zsh
:
setopt extendedglob
rmdir - ** / [0-9] (# c4) _ [0-9] ## (Dod / e @ '[[$ {$ {REPLY: t}% _ *} = $ {REPLY ## * _}]] '@)
BSD find
:
LC_ALL = C find. -regex '. * / \ ([0-9] \ {4 \} \) _ \ 1' -тип d -delete
GNU найти
:
LC_ALL = C найти. -regextype grep -regex '. * / \ ([0-9] \ {4 \} \) _ \ 1' -type d -delete
Вы можете использовать сценарий для запуска tmux. Сохранение следующего в сценарии bash (или любой другой оболочке, которую вы используете, не забывая исправить хэш-удар (#!)), Сделав его исполняемым, а затем запустив сценарий, вы получите новый сеанс tmux с одним окном, на котором запущен vim. Настройте имена сеансов и окон, а также команду по своему вкусу.
#!/bin/bash
tmux new-session -d -s mySession -n myWindow
tmux send-keys -t mySession:myWindow "cd /my/directory" Enter
tmux send-keys -t mySession:myWindow "vim" Enter
tmux attach -t mySession:myWindow