Grep не работает без разрешения на чтение [закрыто]

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

ls -l

Вывести список всех файлов успешно.

Я хочу подсчитать файлы, у которых есть некоторые атрибуты в их имени, с помощью:

ls -l | grep file????.tar.gz | wc -l

Приведенная выше команда генерирует много сообщений об отказе в разрешении, и, наконец, я не получаю ответа.

Почему это происходит и есть ли обходной путь?

РЕДАКТИРОВАТЬ: Следуя предложению Джосипа Родена, выясняется, что я испортил неправильный подстановочный знак. Выполнение:

ls -l | grep -e "file....\.tar.gz" | wc -l

сработало как шарм

-2
задан 1 December 2015 в 19:18
1 ответ

Вы используете символ ? в том смысле, что, похоже, вы хотите, чтобы он означал однобуквенный подстановочный знак. Тем не мение,это так называемый синтаксис шаблона "glob", используемый / расширяемый оболочкой, выполняющей эти команды.

Это, вероятно, приводит к тому, что оболочка пытается найти что-то, на что у нее нет разрешения. (Было бы полезно, если бы вы включили пример такого сообщения об ошибке.)

Для фактического сопоставления однобуквенного подстановочного знака в grep используйте синтаксис «регулярное выражение», поддерживаемый grep, где однобуквенный подстановочный знак - точка (. ).

1
ответ дан 5 December 2019 в 21:25

Теги

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