Помогите мне понять, почему эта функция bash не работает рекурсивно

Структура каталога:

one.pdf
./subdir/two.pdf
./anothersubdir/three.pdf

Когда я печатаю:

find ./ -type f -name "*.pdf" 

он извлекает все pdf-файлы, включая подкаталоги.

Функция Bash

 function getext {find ./ -type f -name "$1"} 

С помощью этой функции в bashrc введите:

 getext *.pdf 

Он извлекает только «one.pdf», но не остальное.

Вопрос : что здесь происходит с функцией? Что не хватает по сравнению со стандартным входом, чтобы получить только первый файл и остановиться?

Спасибо за помощь.

One Solution collect form web for “Помогите мне понять, почему эта функция bash не работает рекурсивно”

По той же причине, что вы указываете "*.pdf" в аргументах для find внутри вашей функции, вам нужно процитировать ее при вызове функции:

 getext "*.pdf" 

В противном случае оболочка попытается сопоставить *.pdf с именами файлов в текущем каталоге, в результате чего она будет расширена – в этом случае до one.pdfперед передачей вашей функции.

  • Как сохранить журнал «uptime record» в Debian?
  • Помощь при проверке выполнения предыдущей команды
  • Скрипт для удаления файлов на основе порогового значения
  • Сценарий переключения Wi-Fi не работает должным образом через i3
  • наблюдение за выполнением скрипта с помощью скрипта monit, похоже, игнорирует каналы
  • Новая строка в переменной
  • Подведение строк с общим полем
  • как сохранить данные в терминале в виде файла электронной таблицы
  • Настройка скрипта в поле AMI для создания каталогов - vsftpd, pam, mysql
  • Как назначить переменную внутри трубы
  • Как работает awk?! ++?
  • Linux и Unix - лучшая ОС в мире.