2016-07-17 30 views
0

我在使用shell腳本時遇到問題。 我試着比我路過參數日期的每一個文件移動(#2,從#1通過文件夾),我目前使用使用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)

比較參照當前文件的時間戳。 參考參數通常是文件的名稱(並且其中一個 時間戳用於比較),但它也可能是描述絕對時間的字符串 。 X和Y是其他 字母的佔位符,並且這些字母選擇哪個時間屬於如何使用 引用進行比較。
部分組合爲 無效;例如,X是t是無效的。有些組合 未在所有系統上實施;例如B不支持 所有系統。如果指定了無效或不支持的XY組合,則會導致致命錯誤。對於GNU日期的-d選項的參數,時間規範被解釋爲 。如果您嘗試使用參考文件的出生時間 ,並且確定出生時間不能爲 ,則會產生致命錯誤消息。如果您指定一個測試,其中 指的是正在檢查的文件的出生時間,那麼對於出生時間未知的任何文件,此測試將失敗 。

如果您想堅持您的腳本,只需更改ls命令的格式。當您想要--time-style=+%y%m%d(需要與腳本中的參數或開關相同的樣式)時,您當前使用--time-style=+%d%m%y

+1

謝謝你,這真的有效 –