Привет я хотел бы сделать это
ls * | grep pattern
Но я бы хотел вместо того, чтобы просто показывать файлу с шаблоном полный путь к файлам, которые соответствуют шаблонам
Одним из способов было бы использовать 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
часть каждой команды