2017-03-27 20 views
0

これは私のシェルスクリプトでタイムスタンプ付きのあるディレクトリから別のディレクトリにファイルをコピーするスクリプトです。スクリプトの引数が多すぎます。あるディレクトリから別のディレクトリにファイルをコピーしたい私のコードには何の誤りがありますか?ファイルをあるフォルダから別のフォルダにコピーするためのUnixシェルスクリプト

Date_Val="$(date +%Y%m%d%H%M%S)"; 

cd /etl_mbl/SrcFiles/ 

if [ -f /etl_mbl/SrcFiles/SrcFiles_TEMP*.csv ] 
then 
cp /etl_mbl/SrcFiles/SrcFiles_TEMP/*.csv /etl_mbl/SrcFiles/Archive/*_$Date_Val.csv 
fi 
+0

新しい場所にタイムスタンプを付けてファイル名を追加しますか? – amudhan3093

答えて

2

あなたは「あまりにも多くの引数」エラーを得た理由は、文は、ファイルの多数に展開され、「もし」のワイルドカードということです。また、 "cp"の宛先にはワイルドカードを使用できないことに注意してください。

#!/bin/bash 

Date_Val="$(date +%Y%m%d%H%M%S)"; 

for file in ./src/*.csv; do 
    filename=${file##*/} 
    basename=${filename%.*} 
    cp $file ./archive/$basename\_$Date_Val.csv 
done 
+0

'。/'強迫観念は何ですか?この場合、何にも良いことですか?単語分割とglob展開を避けるために、$ fileと目的のファイル名を引用することも良い考えです。 – Jens

+0

いいえ、./は必要ありません。オリジナルの投稿では、ほとんどのシステムではおそらく無効な絶対パスが使用されていることに注意してください。 –

関連する問題