2012-06-24 86 views
1

下面,我想找到最新的版本,可能是在多個目錄中的文件。bash腳本 - 在一個目錄中最新版本的文件複製遞歸

example目錄:

~inventory/emails/2012/06/InventoryFeed-Activev2.csv 2012/06/05 
~inventory/emails/2012/06/InventoryFeed-Activev1.csv 2012/06/03 
~inventory/emails/2012/06/InventoryFeed-Activev.csv  2012/06/01 

繼承人的bash腳本:

#!/bin/bash 

FILE = $(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1) 
#echo $FILE #For Testing 

cp $FILE ~/inventory/Feed-active.csv; 

我得到的錯誤是:

./inventory.sh: line 5: FILE: command not found 

腳本應該複製的最新文件如上企圖。

兩個問題:

首先,這是實現我想要的最好方法嗎?其次,上面有什麼不對?

+2

請參見[BashFAQ/003](HTTP:// mywiki.wooledge.org/BashFAQ/003)。 –

+0

請參閱上面的鏈接。本頁面上的所有答案仍然存在問題,例如包含換行符的文件名。 Find沒有按你的時間排序,所以你現在沒有做任何有用的事情。 – ormaaj

回答

6

它看起來不錯,但你必須圍繞=標誌空間。這不起作用。嘗試:

#!/bin/bash 

FILE=$(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1) 
#echo $FILE #For Testing 

cp $FILE ~/inventory/Feed-active.csv; 
1

...不對以上請告訴我?

變量賦值。你不應該在=標誌周圍放置多餘的空格。下面應該工作:

FILE=$(find ~/inventory/emails/ -name INVENTORYFEED-Active\*.csv | sort -n | tail -1) 

...這是才達到我想要的最好的方法是什麼?

大概不會。但最好的方法取決於很多因素。也許誰寫這些文件,可以把他們放在正確的位置擺在首位。您還可以查看文件的修改時間,但可能也會失敗。所以,只要你的作品,我會說去了:)

相關問題