2016-01-13 2 views
0

Может кто-нибудь дать мне подсказку, как я могу сделать следующий Баш скрипт работает должным образом:Как использовать переменную в качестве пути для команды находят

path="/path/" 
excludepath="! -path \"/path/to/exclude/*\" " 

find "$path" "$excludepath" -name *."txt" -type f 

Когда я пытаюсь запустить его я получаю:

find: `! -path "/path/to/exclude/*"': No such file or directory 

Заранее спасибо.

+0

Что значит точно? Корневой путь равен $ path,/path /. Или я ошибаюсь? – vdavid

+0

Дерп, неважно, выборочная слепота. – Amadan

ответ

0

Ваша проблема заключалась в том, что "$excludepath" является единственным аргументом, даже если он содержит пробелы. Чтобы поместить несколько аргументов, используйте массив строк, вместо строки:

excludepath=(! -path "*webshow*") 
find "$path" "${excludepath[@]}" -name "*.txt" -type f 

Это является bashism, хотя (люди, которые наткнуться на это и не использовать bash нужно будет сделать что-то еще).

+0

Ничего себе! Спасибо! Это привело меня к другому вопросу. На самом деле мне нужно написать скрипт, который может найти заданную строку на заданном пути, но исключая каталоги, список которых берется из файла. Если бы вы могли мне помочь, я был бы признателен. [здесь вы идете] (http://stackoverflow.com/questions/34763736/how-to-get-path-argument-from-file-for-find-command) – vdavid

Смежные вопросы