
У меня проблема с моим скриптом. Я пытаюсь написать скрипт, где опция для команды find является первым аргументом командной строки.
В моем сценарии есть что-то вроде
find_option=$1
find $find_option
Проблема в том, что, например, для опции find *.txt
выводом является только первый текстовый файл в моем каталоге, а я хотел бы найти все такие файлы.
Спасибо
решение1
Предположим, что вы зададите своему скрипту такой шаблон:
./myscript '*.txt'
(кавычки необходимы, чтобы избежать расширения шаблона до имен в текущем каталоге), тогда вы можете написать свой скрипт следующим образом:
#!/bin/sh
name_pattern=$1
find . -name "$name_pattern"
Он берет первый аргумент командной строки и использует его в вызове find
, фильтруя имена, найденные в текущем каталоге и ниже, по заданному шаблону.
Обратите внимание, что здесь вам также необходимо заключить в кавычки расширение переменной $name_pattern
при вызове find
по той же причине, по которой вам нужно было заключить его в кавычки в командной строке при вызове вашего скрипта, то есть, чтобы избежать расширения шаблона до имен в текущем каталоге.