3

Привет я хотел бы сделать это

ls * | grep pattern

Но я бы хотел вместо того, чтобы просто показывать файлу с шаблоном полный путь к файлам, которые соответствуют шаблонам

1 ответ1

2

Одним из способов было бы использовать find для сопоставления, хотя вам, возможно, придется изменить шаблон, чтобы он соответствовал синтаксису find вместо grep s, так как я думаю, что они не идентичны.

find "$PWD" -maxdepth 1 -regex 'pattern'

должен показать вам полный путь, и -maxdepth предотвратит его попадание в подкаталоги. Если вы просто хотите использовать globs вместо regex, вы можете вместо этого использовать синтаксис -name 'glob' , а затем использовать * как если бы вы использовали ls .

Вот пример вывода, который я вижу:

$ find "$PWD" -maxdepth 1 -regex '.*sh$'
/home/erenouf/tmp/scratch/t.sh
/home/erenouf/tmp/scratch/parseIW.sh
/home/erenouf/tmp/scratch/output.sh

так как я был в то время в ~/tmp/scratch и искал файлы, которые заканчивались на sh

В этом случае я могу получить тот же результат с

find "$PWD" -maxdepth 1 -name '*sh'

Чтобы он выглядел в подкаталогах, вы можете просто удалить -maxdepth 1 часть каждой команды

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .