2012-03-08 2 views
0

У меня есть список файлов, который дается, например с помощью find . -name file.*системы Как создать переменные инициализированы отдельной строкой ввода

./file.a 
./dir1/dir2/file.b 
./dir1/dir3/file.c 
./file.d 
./file.e 

... 

Как автоматически создавать переменные в залежах:

F1=./file.a 
F2=./dir1/dir2/file.b 
F3=./dir1/dir3/file.c 
F4=./file.d 
F5=./file.e 

... 

Я думаю, что какая-то умная комбинация sed/awk/xargs выполнит эту работу.

Можете ли вы мне помочь?

+0

Что логика для 'F1 = ../../file.a F2 = ../dir1/dir2/file.b F3 =. ./dir1/dir3/file.c F4 =./file.d F5 =./file.e' Я имею в виду, как вы получаете '../../' для одного и '. /' для другого? – latestVersion

+0

@latestVersion: моя ошибка .. – noisy

+0

Тогда у kev есть ответ для вас. – latestVersion

ответ

3
$ F=(`find . -name 'file.*'`) 
$ for((i=1;i<=${#F};i++)); do eval "F$i='${F[$i]}'"; done 
+0

+1. Будут разбиты на любые файлы с пробелами, но приятны и компактны. –

+1

Ошибка по очереди: должно быть: 'for ((i = 0' –

1

perl -e "@files = qx (find. -name file. *);"

+0

возможно лучший способ: perl -e" map {FooFunction ($ _);} qx (find. -name file. *) ; " – gaussblurinc

1

Это может работать для вас:

find . -name 'file.*' | sed = | sed 'N;s/^\(.*\)\n/F\1=/' >/tmp/source 
. /tmp/source 
+0

Oo sed сложнее понять, чем perl :) – gaussblurinc

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

  • Нет связанных вопросов^_^