2014-09-13 3 views
0
FreeBSD 9.2 RELEASE p2 

У меня есть файл fromdirs.txt. В этом файле находится новая строка разделенный список каталогов следующим образом:Поиск файлов в нескольких каталогах, взятых из списка в файле?

/etc 
/home 
/home/goods/ 

мне нужно сначала найти в файлах все каталога, который имеют имена, как «хорошее» или содержать строку «(NODES_'TASK ')», а затем скопировать все эти файлы в каталог /tmp.

2.sh файла CHMOD + х и 755 fromDirs.txt файл CHMOD + х и 755

Этот код дает мне ошибку

IFS=$'\n' read -d '' -r -a dirs < fromDirs.txt 
find "${dirs[@]}" -type f \(-name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \; 

2.sh: Невозможно открыть fromDirs. ТХТ: Нет такого файла или каталога

2.sh: $ {каталоги [...}: Плохо замена

Но существуют Файловые fromDirs.t и 2.sh работают от него каталог распределения, а также я пытаюсь обеспечить полный путь вместо fromDirs.txt и ошибки того же

Этого кода дают мне ошибку

FILE=fromDirs.txt 
IFS='\n' 
while read -r dirs 
do 
find "$dirs" -type f \(-name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \; 
done < "$FILE" 

2.sh: 6: Синтаксическая ошибка: "сделана" неожиданный (ожидая "делать")

Этим код дает мне ошибки тоже

FILENAME=fromDirs.txt 

awk '{kount++;print kount, $0} 
    END{print "\nTotal " kount " lines read"}' $FILENAME 

2.sh:: не найден AWK: не могу открыть исходный файл fromDirs.txt номер строки 2

Так как читать файл построчно и делать то, что мне нужно?

+0

Попробуйте его с 'bash', вместо' sh' – BroSlow

+0

Баш: не найден –

+0

попробовать с 'ksh' или дублированный проверить свою среду PATH. У меня нет опыта работы с FreeBSD, но сложно представить, что 'bash' или' ksh' недоступны. Удачи. – shellter

ответ

1

Это работает для меня

for line in "`cat fromDirs.txt`"; do find "$line" -type f \(-name '*good*' -o -exec grep -F "(NODES_'TASK')" {} \; \) -exec cp {} /tmp/ \;; done 
Смежные вопросы