LINUX.ORG.RU

Цикл или Функция или ещё что


0

1

Есть скрипт который перемещает файлы из директорий /home/1 /home/2 /home/3 /home/4 /home/4 /home/6 и помещает их в /home/base

как сделать что бы не повторять код? для /home/2 ........и так далее

#!/bin/bash # Путь к каталогу с файлами

SRC_DIR=/home/1

SCR_DIR2=/home/2 * * *

и так далее до 6

for i in $(ls «${SRC_DIR}»);

do

[ -f «${SRC_DIR}/${i}» ] && mv «${SRC_DIR}/${i}» «/home/base/$(date +%Y%m%d)_${i#*.}»

done



Последнее исправление: sinxron (всего исправлений: 4)

Ответ на: комментарий от Kalashnikov

да это проще а как же если у меня дописывается с какой папки взял

FILE120120808.dat

/home/base/FILE_1$(date +%Y%m%d)_${i#*.}"

А если со второй возьму по принцепу [1-6] FILE220120808.dat тоже нужно объявить FILE1 FILE2......FILE6 то как ?

sinxron
() автор топика
Ответ на: комментарий от sinxron

#!/bin/bash # Путь к каталогу с файлами

SRC_DIR=/home/[1-6]

for i in $(ls «${SRC_DIR}»);

do

[ -f «${SRC_DIR}/${i}» ] && mv «${SRC_DIR}/${i}» «/home/base/FILE_[1-6]$(date +%Y%m%d)_${i#*.}»

done

Так что ли?

sinxron
() автор топика

#!/bin/bash

В более сложном случае можно было бы использовать массивы bash для хранения списка исходных директорий.

А так -

for d in /home/[1-6];
do
for f in «$d»/*
do
[ -f «$f» ] && mv «$f» «/home/base/$(date +%Y%m%d)_${f#*.}»
done
done


Hint: www.linux.org.ru/wiki/en/Lorcode

AITap ★★★★★
()
Ответ на: комментарий от AITap

А как же дописывание FILE1_ FILE2_ .......FILE6_ в /home/base/ в зависимости с какой директории взял ? /home/[1-6] с /home/1 значит FILE1 и так далее

sinxron
() автор топика
Ответ на: комментарий от sinxron

Переменная $d внутри цикла содержит текущую директорию из перебираемых. Дописывайте к имени файла $(basename «$d»).

AITap ★★★★★
()
Ответ на: комментарий от AITap

А если я дату буду брать с самих файлов(1 строчка в самом файле) то тогда как?

#!/bin/bash

for d in /home/[1-5]; do for f in «$d»/* do [ -f «$f» ] && mv «$f» «/home/base/FILE$(basename »$d").${f#*.}" done done

sinxron
() автор топика
Ответ на: комментарий от sinxron
read date <file


Прочитает из файла file первую строчку в переменную $date.

AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.