Извлеките случайную подстроку имени файла в выходную переменную в скрипте Bash для FTP и скрипта архивирования - PullRequest
1 голос
/ 21 марта 2012

Я все еще новичок в создании сценариев оболочки и хотел бы сделать несколько резервных копий полученных мной биллинговых файлов, а затем загрузить их в каталог FTP-сервера и после завершения архивировать файл в новый каталог с именем archive. Вот что меня сбивает с толку:

Файлы фактуры отправляются с включенной случайной подстрокой (например, 020001.030002.XXXXX.01.2, где XXXXXX изменяется ежедневно). Что мне нужно сделать, это использовать что-то вроде awk, чтобы найти подстроку в имени файла, скопировать ее в переменную, чтобы я мог использовать ее для передачи имени файла на FTP-сервер, а затем заархивировать файл. Затем мне нужно поместить переменную в нечто, похожее на FILE = 020001.030002. ($ VARIABLE) .01.2.

Я обнаружил этот пост в stackoverflow , который похож по своей природе, однако, так как у меня есть случайный входной файл каждый раз, когда я испытываю трудности с выяснением, как выполнить эту задачу. Если это не то, что можно сделать с помощью сценариев оболочки, есть ли другой способ (Python и т. Д.) Для выполнения этой задачи?


Примеры имен файлов - опять же они произвольно создаются моим биллинг-сервером: (обратите внимание, что в конце этих файлов нет расширения)

  • 020001.030002.00320.01.2
  • 020001.030002.07243.01.2
  • 020001.030002.12048.01.2

Требуемый формат должен оставить это имя файла без изменений для размещения в сценарии FTP для загрузки, например:

#/bin/bash
FTPU="user" # ftp login name
FTPP="passwd" # ftp password
FTPS="ftp.server.com" # remote ftp server
FTPF="/home/backup/" # remote ftp server directory for $FTPU & $FTPP
LOCALFILE="020001.030002.($INSERT_VARIABLE_HERE).01.2"
ncftpput -m -u $FTPU -p $FTPP $FTPS  $FTPF $LOCALFILE

1 Ответ

0 голосов
/ 22 марта 2012
f=020001.030002.00320.01.2
id=${f:14:5}
echo $id

результат:

00320

С

id=${f:14:5}

вы извлекаете из позиции 14 символов.


Альтернативный подход:

f=020001.030002.00320.01.2
end=${f/020001.030002./}
echo $end
00320.01.2
core=${end/.01.2/}
echo $core
00320
...