Bash脚本 - 以递归方式复制目录中文件的最新版本

时间:2012-06-24 00:54:15

标签: bash unix

下面,我试图找到可能在多个目录中的文件的最新版本。

示例目录:

~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 个答案:

答案 0 :(得分: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 :(得分:1)

  

......上面的错误?

变量赋值。你不应该在=标志周围加上额外的空格。以下应该有效:

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

......这是实现我想要的最佳方法吗?

可能不是。但最好的方法取决于很多因素。也许编写这些文件的人可以将它们放在正确的位置。你也可以查看文件修改时间,但也可能会失败......所以只要它适合你,我就说去吧:)