Я не знаю, существуют ли ресурсы онлайн, но локальные тесты прекрасен, например, с kiki
Это поможет Вам узнать о regex.
Пакет доступен в Ubuntu / репозиторий Arch, чтобы установить его, сделать:
apt-get install -y kiki
Или pacman -S kiki-re
на Arch.
Портативные подстановочные шаблоны имени файла несколько ограничены. Нет никакого способа выразить “все файлы кроме этого”.
С файлами Вы показали здесь, Вы могли соответствовать на первой букве ~/certificate/[!m]*
(“все имена файлов, начинающиеся с символа, который не является m
”) или на последней букве ~/certificate/*[^r]
.
Если необходимо подстроить список файлов для копирования портативно, можно использовать find
. Использовать -type d -prune
постараться не рекурсивно вызывать в подкаталоги.
cd ~/certificates &&
find . -name . -o -type d -prune -o ! -name 'my.war' -name 'other.exception' -exec sh -c 'cp "$@" "$0"' ~/cert {} +
При использовании ksh можно использовать его расширенные шаблоны шарика.
cp ~/certificates/!(my.war|other.exception) ~/cert
Можно использовать ту же команду в ударе, если Вы работаете shopt -s extglob
сначала. Можно выполнить ту же команду в zsh, если Вы работаете setopt ksh_glob
сначала. В zsh существует альтернативный синтаксис: выполненный setopt extended_glob
, затем один из
cp ~/certificates/^(my.war|other.exception) ~/cert
cp ~/certificates/*~(my.war|other.exception) ~/cert
С другой стороны, используйте инструмент копирования со списком исключения, таким как мир или rsync. Мир является рекурсивным по умолчанию; можно использовать опцию -d
скопировать каталоги, но не их содержание.
rsync --exclude='my.war' --exclude='other.exception' ~/certificates/ ~/cert/
pax -rw -s '!/my\.war$!!' -s '!/other\.exception$!!' ~/certificates/ ~/cert/
Можно использовать эту команду:
$ cp -R ~/certificate/[act]* ~/certs/.
Я обычно делаю что-то вроде этого для проверения моих шариков оболочки.
$ echo certificate/[act]*
certificate/apache certificate/apache3.keystore certificate/csr.txt certificate/tomcat certificate/tomcat.keystore
Шарики оболочки не являются действительно регулярными выражениями, я полагаю, что их называют шаблонами.
Средство в Bash, который делает сопоставление с образцом, вполне прилично документируется в страницу справочника Bash в названном разделе: "Сопоставление с образцом".
find ~/certificates -type d -name '*' -exec mkdir -p ~/certs/{} \;
переместите каталоги
find ~/certificates ! -filetype f ! -name "my.war" -exec cp "{}" ~/cert \;
переместите файлы, но не (!
) названные (-name
) my.war ("my.war"
) с кавычками вокруг предотвращения my.war .
от того, чтобы быть интерпретируемым оболочкой.
.
не интерпретируется оболочкой без кавычек, они ничего не делают здесь. .
не специальный символ в оболочке globbing. средства
– Chris Down
17.10.2013, 09:20