В bash запустите shopt -s extglob
(или поместите его в свой ~/.bashrc
), и вы сможете использовать дополнительные шаблоны, которые предоставляют регулярные выражения с необычным синтаксисом (унаследованным от ksh). Конечно, вы можете использовать эти шаблоны и в ksh, а также в zsh после setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
В Zsh вы можете напрямую использовать (foo|bar)
в качестве шаблона.
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Обратите внимание, что команда вызывается с полным путем. Если вы хотите вызвать команду с коротким путем, вам нужно как-то изменить каталог, и (cd /opt/somedir && somecommand aa bb cc)
это самый простой способ.
Жиль "ТАК - прекрати быть злым"
источник
Вы можете фильтровать, используя
egrep
:Чтобы найти все текстовые файлы:
источник
Во-первых, я направляю вас: никогда не разбирайте , никогда . Правильный и канонический способ сделать то, что вы хотите, это найти .
Например:
Я обычно использую
-name
вместо того,-regex
как это проще. Но регулярное выражение подходит для вашего случая использования. Вы должны выполнить команду без-exec
первого раза, чтобы убедиться, что это действительно те файлы, которые вы хотите переместить / удалить.источник