регулярное выражение для поиска cmd для вывода всех файлов с 'e' в них, но не в начале / конце имени - PullRequest
0 голосов
/ 29 июня 2019

Мне нужна команда find для вывода всех имен файлов в определенной директории, которые содержат 'e', ​​но 'e' не должно быть в начале / конце имени файла.

$ ls .
emil eva extreme let yes

Команда поиска, которую я ищу, должна выводить только let и yes, а не другие имена.

То, что я пробовал до сих пор:

find dir -name "*e*
find dir -name "^e$"
find dir -name "[a-z]e[a-z]"

Подобные вопросы, которые я не могу понять:

список всех файлов, которые:

  • начинаются с a, z или y

  • не начинаются с x, z или y

  • состоит только из одного символа

  • состоит только из двух символов

  • состоит только из двух ИЛИ трех символов

Заранее спасибо:)

1 Ответ

2 голосов
/ 29 июня 2019

, если вы хотите понять, введите команду

man find

Я думаю, что вы легко можете решить остальных, а если нет, задайте их в другом вопросе. решение для кейса с буквами "е":

find .  -maxdepth 1 -type f -regextype sed -regex  '^\./[^e].*e.*[^e]$'

Объяснение:

find. looks in the current directory
-maxdepth 1 does not go into subdirectories
-type f only displays files
-regextype sed sets the type of regular expressions to those for sed
-regex '^\./[^e].*e.*[^e]$'   the regular expression

^ the beginning of the sequence
\. literal dot
/ literal '/'
[^e] character not being the letter e
.* any number of any characters
e literal sign e
$ end of the sequence
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...