2016-07-17 31 views
0

シェルスクリプトを使用して問題が発生しています。 私は(#1として渡されたフォルダから#2のように)私はパラメータで渡す日付より古いすべてのファイルを移動しようと、私は現在BC計算を使用して左にゼロを維持する

#/bin/bash 
cd $1  # Parameter 1: 
for i in * 
do 
var=$(echo $(ls -l --time-style=+%d%m%y $i) | awk '{print $6}' | bc) 
temp=$(echo $2 | bc) 
if [ $var -lt $temp ] 
then 
cp $i /home/igor/olders 
fi 
done 

を使用しますが、日付が10日目私の前にいるときに問題がありますこの数字をオーダーよりも大きくする方法を知らないと、01/07/16は13/06/16より小さくなります。誰か助けてくれますか?

+1

これに 'find'を使うことができます。 –

+0

ここでパラメータとして渡された日付はどこですか? – sjsam

+0

@sjsamスクリプトを呼び出すと、$ script 130616 –

答えて

1

あなたは、代替を使用することもできますコメントで示唆:

find -newerXY reference 

manpage for find(1)を引用:

は、参照して、現在のファイルのタイムスタンプを比較します。 参照引数は、通常、ファイルの名前です(比較には タイムスタンプの1つが使用されます)が、絶対時間を表す文字列 でもかまいません。 XとYは他の 文字のプレースホルダーであり、これらの文字はどのように リファレンスが比較に使用されているかを選択します。
一部の組み合わせは無効です です。たとえば、Xがtであることは無効です。いくつかの組み合わせ は、すべてのシステムで実装されていません。たとえば、Bはすべてのシステムで ではサポートされていません。無効またはサポートされていないXYの組み合わせが である場合、致命的なエラーが発生します。 GNU dateの-dオプションの引数は、時間指定が と解釈されます。参照ファイルの生年月日を とし、生年月日を決定すると、 になることがあります。致命的なエラーメッセージが表示されます。 が検査されているファイルの生年月日を参照するテストを指定した場合、このテストでは、生年月日が不明なファイルについては、 が失敗します。

スクリプトに固執する場合は、lsコマンドの形式を変更するだけです。 --time-style=+%y%m%dが必要な場合は、現在--time-style=+%d%m%yを使用しています(スクリプト内のパラメータまたはスイッチと同じスタイルが必要です)。

+1

のような日付がパラメータとして渡されます –

関連する問題