скрипт поиска файлов bash - PullRequest
       5

скрипт поиска файлов bash

1 голос
/ 17 сентября 2010

Я пытаюсь сделать очень простой bash-скрипт для поиска файлов, соответствующих заданному имени, в структуре каталогов текущего каталога.Итак, я использовал функцию поиска, подобную этой

ARGS=1
E_BADARGS=65
E_NOFILE=66

if [ $# -ne "$ARGS" ]  # Correct number of arguments not passed
then
  echo "Usage: `basename $0` filename"
  exit $E_BADARGS
fi

echo  `find ./ -type f -name \$1`

, она прекрасно работает, но в отличие от того, когда я использую команду find в командной строке, пути к полученным файлам не разделяются новой строкой, а просто пробелом.Это естественно не так легко увидеть на экране.Как я могу повторить, чтобы каждый найденный файл был отделен новой строкой.

Ответы [ 3 ]

3 голосов
/ 17 сентября 2010

Я бы изменил вашу команду поиска на эту:

find . -maxdepth 1 -type f -name "$1"

Обратите внимание, что двойные кавычки очень важны в команде поиска для обработки правильных выражений.Также я добавил maxdepth 1 для поиска файлов только в текущем каталоге

1 голос
/ 17 сентября 2010

Как заметил @codaddict, echo здесь не требуется. Но это также хорошее упражнение, чтобы понять, почему ваш код ведет себя так. Подсказка: сравните

echo  `find ./ -type f -name \$1`

и

echo  "`find ./ -type f -name \$1`"
1 голос
/ 17 сентября 2010

Попробуйте изменить

echo  `find ./ -type f -name \$1`

до

find ./ -type f -name $1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...