Как я перечисляю файлы, которые имеют “s” настолько же сначала и “l” как последний символ с командой оболочки?

Я пытаюсь перечислить файлы, которые запускаются с "s" и с "l".

Команда, которую я пробую, ls -l *sfa*

-6
задан 21 March 2016 в 11:10

4 ответа

Вопрос не очень ясен... на основе Вашего комментария к @cmks, вот две опции:

  1. , Если Вы ищете файлы, где первый символ имени файла является "s" и последним, "l" - затем используют ls -l s*l

  2. , Если Вы ищете файлы, где первый символ имени файла (или или "s"), и последнее (или или "l") - затем используют ls [as]*[al]

, Если это - что-то еще, отредактируйте свой вопрос разъясниться...

Ваша версия ls -l sfa только перечислит файлы с точным именем "sfa" (или, если будет каталог с тем именем, какими-либо файлами в том каталоге). Это не делает то, что Вы, кажется, ищете.

<час>

правила для соответствия именам файлов ("globbing") довольно просты:

  1. "?" соответствия любой отдельный символ
  2. " *" соответствуют любому числу (нуль или больше) символов
  3. квадратные скобки Использования ([]) для соответствия отдельному символу от набора: [fqsb] соответствует или f, q, s, или b; [b-d] соответствует b, c, или фигурным скобкам Использования d
  4. ({}} для соответствия одной из нескольких определенных строк: {нечто, панель} соответствует или "нечто" или "панели".

разделитель каталога "/" исключен из соответствия - соответствие только сделано на именах файлов.

См. также ShellGlobbing в справке Ubuntu.

4
ответ дан 29 September 2019 в 09:57

Можно дать больше чем один параметр эти ls команда за один раз:

ls -l H* *l

то, Что происходит, оболочка делает Pathname Expansion. Можно читать больше об этом в страницах руководства удара:

man bash

, поскольку оболочка делает это, оболочка называет команду ls следующим образом:

ls -l Hejo Hesja Hejan Lesl Lesil Lesul Lestl

Это импортируется для понимания, это не эти ls команда, но оболочка, кто ищет соответствие путям.

0
ответ дан 29 September 2019 в 09:57

Кроме использования ls команда и подстановочные знаки оболочки, можно было использовать find команда также.

$ find -maxdepth 1 -iname "s*l"                                                                       
./script.pl
./storm carl
./sal
./simple_curl
0
ответ дан 29 September 2019 в 09:57
ls -l s*l
ls -l s?l
  • "*" означает 0 или больше символов
  • Если Вы хотите точную сумму букв между "s" и "l" a"?" означает 1 символ. 2 дюйма?? средства 2 символа.
  • Можно также поместить наборы, промежуточные []. Так ls -l s[a-z]l ограничил бы его sal через szl

Из комментариев:

Если Вы хотите файлы, начинающиеся "s" и "a", можно использовать набор:

ls -l [sa]*

перечислит все файлы, начинающиеся с тех 2 букв. Можно использовать это для создания всех видов групп. Exampe [sa] [df] [1ojwfihwef] * заставил бы его искать файл, начинающийся с 3 букв что каждое соответствие что определенная группа

1
ответ дан 29 September 2019 в 09:57

Другие вопросы по тегам:

Похожие вопросы: