Чтобы выполнить 'find' с некоторыми переменными из txt файла, я сделал это, но это не работает.это неправильно с оператором execute?
#/bin/bash while read line; do echo tmp_name: $line for ST in 'service.getFile("'$line; do find ./compact/ -type f -exec grep -l $ST {} \; done done < tmpNameList.txt
Попробуйте указать $ST в вашей команде find.
$ST
find
Более того:
./
у вас, кажется, нет никакого специального символа регулярного выражения (( необходимо заключать в кавычки в классическом режиме регулярного выражения grep, и я предполагаю, что вы имели в видубуквальная точка), поэтому используйте fgrep (или grep -F).Т.е.:
(
grep
fgrep
grep -F
find compact/ -type f -exec fgrep -l "$ST" {} \;
grep может считывать несколько шаблонов из файла (опция -f):
-f
find ./compact/ -type f -exec grep -f patterns.txt {} +
, где patterns.txt (предварительно 'service.getFile(' к каждой строке):
patterns.txt
'service.getFile('
sed 's/^/service.getFile(/' tmpNameList.txt >patterns.txt