Я пытаюсь перечислить файлы, которые запускаются с "s" и с "l".
Команда, которую я пробую, ls -l *sfa*
Вопрос не очень ясен... на основе Вашего комментария к @cmks, вот две опции:
, Если Вы ищете файлы, где первый символ имени файла является "s" и последним, "l" - затем используют ls -l s*l
, Если Вы ищете файлы, где первый символ имени файла (или или "s"), и последнее (или или "l") - затем используют ls [as]*[al]
, Если это - что-то еще, отредактируйте свой вопрос разъясниться...
Ваша версия ls -l sfa
только перечислит файлы с точным именем "sfa" (или, если будет каталог с тем именем, какими-либо файлами в том каталоге). Это не делает то, что Вы, кажется, ищете.
правила для соответствия именам файлов ("globbing") довольно просты:
разделитель каталога "/" исключен из соответствия - соответствие только сделано на именах файлов.
См. также ShellGlobbing в справке Ubuntu.
Можно дать больше чем один параметр эти ls
команда за один раз:
ls -l H* *l
то, Что происходит, оболочка делает Pathname Expansion
. Можно читать больше об этом в страницах руководства удара:
man bash
, поскольку оболочка делает это, оболочка называет команду ls
следующим образом:
ls -l Hejo Hesja Hejan Lesl Lesil Lesul Lestl
Это импортируется для понимания, это не эти ls
команда, но оболочка, кто ищет соответствие путям.
Кроме использования ls
команда и подстановочные знаки оболочки, можно было использовать find
команда также.
$ find -maxdepth 1 -iname "s*l"
./script.pl
./storm carl
./sal
./simple_curl
ls -l s*l
ls -l s?l
ls -l s[a-z]l
ограничил бы его sal
через szl
Из комментариев:
Если Вы хотите файлы, начинающиеся "s" и "a", можно использовать набор:
ls -l [sa]*
перечислит все файлы, начинающиеся с тех 2 букв. Можно использовать это для создания всех видов групп. Exampe [sa] [df] [1ojwfihwef] * заставил бы его искать файл, начинающийся с 3 букв что каждое соответствие что определенная группа