2012-03-21 13 views
1

私はまだシェルスクリプトの初心者ですが、受信した課金ファイルのバックアップをいくつか作成し、FTPサーバーディレクトリにアップロードします。完了時に、ファイルをアーカイブという新しいディレクトリにアーカイブします。ランダムなファイル名の抽出Bashでの変数出力への出力FTP pushおよびarchiveスクリプト用のスクリプト

請求ファイルは、ランダムなサブストリング(例:XXXXXXが毎日変更される020001.030002.XXXXX.01.2)とともに送信されます。私がする必要があるのは、ファイル名に部分文字列を見つけるためにawkのようなものを使用し、それを変数にコピーして、ファイル名をFTPサーバーにプッシュしてからファイルをアーカイブすることです。次に、変数をFILE = 020001.030002($ VARIABLE).01.2に似たものに配置する必要があります。

私はthis post on stackoverflowに位置していますが、このタスクを達成する方法を理解するのが難しいたびに、ランダムな入力ファイルがあるためです。これがシェルスクリプトを通して行うことができないものなら、このタスクを達成する別の方法(Pythonなど)がありますか?


サンプルファイル名 - 再び彼らはランダムに私の課金サーバによって作成されます(これらのファイルの末尾に拡張子がないことに注意)

  • 020001.030002.00320.01.2
  • 020001.030002。 07243.01.2
  • 020001.030002.12048.01.2

必要な形式がそのまま、このファイル名を残す必要があります

#/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 
+0

VARIABLE = XXXXX:


代替アプローチ。どちらも5インチです。区切られたセクションには各セクションの番号が付いています。 2-3のサンプルファイル名と、変更されたバージョンに必要な形式を含めるように質問を編集できますか?編集ボックスの上部に書式設定 'ツールバー'があることに注意してください。 {}はフォーマットされ、あなたの行は一緒にマージされません。がんばろう。 – shellter

+0

行き方良い最初の投稿.. 'LOCALFILE =" 020001.030002。($ INSERT_VARIABLE_HERE).01.2 "'が020001.030002.00320.01.2'や '020001.030002.07243.01.2'や....と異なるのはまだ分かりません。 '$ {INSERT_VARIABLE_HERE}'がどのように見えるかをもう一度見てみましょう。あるいは、あなたは '020001.030002。、.01.2'の部分が実際に常に変更されていると言っていますが、あなたはstd part 1,2,4,5に新しいファイル名として保存されているものを減らし、パート3ファイル名を変更するには?がんばろう。 – shellter

答えて

0
f=020001.030002.00320.01.2 
id=${f:14:5} 
echo $id 

結果:などのアップロード用のFTPスクリプトで配置する

00320 

id=${f:14:5} 

を使用すると、位置から14 5文字を抽出します。 XXXXXと元のファイル名は、FILE = ... $ {VARIABLE} ...と何が違うのですか(私には)それははっきりしていない

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

しかし、私はfがどの日になるのかわからないので、これを自動化するためにディレクトリパスからfを自動的に決定する方法があるので、cronからスクリプトを実行できますか? – psiphix

+0

@psiphix:ファイルはどこに届きますか?今はどうやって新しいファイルですか?それはディレクトリ内の唯一のファイルですか? –

+0

/home/username/frombilling私はファイルをftpディレクトリにプッシュした後、そのファイルをアーカイブし、そのように日付を追加します(ここでも変数はありません)。 'date_formatted = $(date +%m %d%y%H%M) cp -r $ 1 $ 2. $ date_formatted' – psiphix

関連する問題