2010-12-03 2 views
1

я 3 директории с именем:/Главная/пользователь/Control4,/дом/пользователь/control8,/дом/пользователь/control16Как перенаправить вывод в другой каталог в BASH?

Я написал скрипт-файл, который имеет две петли, первый работает моделирование , создавая 3 файла с именем cc1.txt cc2.txt и cc3.txt, а второй - для имен каталога

Мне нравится направить cc1.txt, cc2.txt, cc3.txt в/home/user/control4,/home/user/control8,/home/user/control16, соответственно. Каков точный синтаксис для этого в BASH?

Благодарим за помощь.

Мой файл сценария взгляд любит это

#!/user/bin/bash 
for j in $(4 8 16) # loop for directories 
do 
for i in $(seq 1 3) # loop for simulations 
do 
.... produce cc1.txt cc2.txt cc3.txt 
done 

Как вывести три файла в соответствующих каталогах? что-то вроде /home/user/control$j/cc$i.txt?

сделано

ответ

1
for j in /home/user/control{4,8,16} 
do 
    for i in cc{1,2,3}.txt 
    do 
     produce "$j/$i" 
    done 
done 

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

for i in {1..3} 
do 
    produce "/home/user/control$((2*2**i))/cc$i.txt" 
done 
1
cat cc$i.txt > /home/user/control$j/cc$i.txt 
+0

Правильно, я забыл кошку. Контролирует ли он $ j вместо управления/$ j? Cheers Andreas – Tony 2010-12-03 02:59:42

+0

моя ошибка, отредактировано – 2010-12-03 03:00:19

0

Если я читаю ваше право сценарий, вы в конечном итоге с 9 файлов: cc1 через 3 каждого в каталогах Control4, 8 и 16. Тем не менее, ваше текстовое описание подразумевает, что вы хотите только 3 файлов всего: control4/cc1.txt, control8/cc2.txt и control16/cc3.txt.

Если у вас буквально есть команда с именем produce, которая принимает выходные файлы в качестве параметров, и вы хотите всего 3 файла, я просто укажу три выходных каталога & файлов вручную, а не беспокоиться о циклировании.

Если у вас буквально есть команда с именем produce, которая принимает выходные файлы в качестве параметров, и вы хотите получить 9 файлов, то да, управление $ j/cc $ i.txt сделает это.

Если у вас нет команды с именем produce, которая принимает выходные файлы в качестве параметров (т. Е. Эта строка в вашем примере кода была psuedo-code), а команда, которая производит данные, просто выгружает эти файлы, не указав ничего , то я думаю, вам придется mv cc1.txt control4 ; mv cc2.txt control8 ; mv cc3.txt control16 после этого.

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