Я нахожусь в папке, в которой у меня нет разрешения на чтение содержимого.
ls -l
Вывести список всех файлов успешно.
Я хочу подсчитать файлы, у которых есть некоторые атрибуты в их имени, с помощью:
ls -l | grep file????.tar.gz | wc -l
Приведенная выше команда генерирует много сообщений об отказе в разрешении, и, наконец, я не получаю ответа.
Почему это происходит и есть ли обходной путь?
РЕДАКТИРОВАТЬ: Следуя предложению Джосипа Родена, выясняется, что я испортил неправильный подстановочный знак. Выполнение:
ls -l | grep -e "file....\.tar.gz" | wc -l
сработало как шарм
Вы используете символ ?
в том смысле, что, похоже, вы хотите, чтобы он означал однобуквенный подстановочный знак. Тем не мение,это так называемый синтаксис шаблона "glob", используемый / расширяемый оболочкой, выполняющей эти команды.
Это, вероятно, приводит к тому, что оболочка пытается найти что-то, на что у нее нет разрешения. (Было бы полезно, если бы вы включили пример такого сообщения об ошибке.)
Для фактического сопоставления однобуквенного подстановочного знака в grep используйте синтаксис «регулярное выражение», поддерживаемый grep, где однобуквенный подстановочный знак - точка (.
).