1

bashスクリプトでhdfsにロードするために、毎日(wgetを介して)5つのファイルを/ tmpに保存します。

donaldDuck-2013-07-20.zip
mickeyMouse-2013-07-20.zip
goofyGoof-2013-07-20.zip
plutoStar-2013-07-20.zip
bigBadWolf-2013-07-20.zip

ファイル名の日付部分は動的です。

次に、hadoop に 5 つのファイルのそれぞれをロードするように指示するにはどうすればよいですか? ループについて聞いたことがあります。

for file in /tmp/*; do
echo "Running ${file##*/} ...."
done

エコー行を「hadoop fs -put...」ステートメントに置き換えますか? どのように見えるでしょうか?

4

2 に答える 2

2

次のようなことができます:

#!/bin/bash

when=$(date "+%Y-%m-%d") #output like 2013-07-23
names=(donaldDuck mickeyMouse goofyGoof plutoStar bigBadWolf)

for file in "${names[@]}"
do
        ls -l $file-$when.zip #output like donaldDuck-2013-07-23.zip
done

説明

名前は配列に格納され$namesます。したがって、 でループできますfor file in "${names[@]}"。並行して、日付を に格納している$whenため、形式は と一致し$file-$when.zipます。

于 2013-07-23T11:20:09.183 に答える