一个文件传输的脚本

这是我创build的用于从目录传输特定types的文件的脚本。 我正在努力find一种方法来将文件移动到当前时间戳档案目录。

#!/bin/bash SERVER='abc.com' USER='xyz' PASSWD='lddkdkdkas' find /directory/ -name ABC002*.csv | while read fname do scp $fname [email protected]:~/XYZ/ mv $fname ./archive/ done 

在这里,我可以将文件移动到存档,但是我无法将其名称更改为filename * timestamp。

尝试

mv $fname ./archive/$(basename $fname)-$(date +%Y%m%d-%T)

尝试:

 mv $fname /tmp/`basename $fname`-`date +%Y%m%d_%H%M` 

如果您更喜欢不同的时间戳或文件名,则可以使用此主题的变体。 请注意,此解决scheme不足以处理多个文件名。

给Warner的答案添加一个基本名称:

  mv $fname ./archive/`basename $fname`-`date +%Y%m%d_%H%M` 

尝试这个

 mv $fname ./archive/`date +%m%d%y-%T`-$fname 

在T之前和T之后有单个反引号。由于某些原因,他们不在后

您可能需要使用basename命令来删除完整的文件path。

你也可以使用一个数组来生成一个稍后移动的文件列表; 甚至可以使用find-exec选项,如下所示:

 find /dir -iname BLAH -exec sh -c 'new_name=$(basename {}); scp {} user@host:dest/ && mv {} /archive/$new_name$(date..)' \; 

(不要忘了\;最后)

该行仅在( && )通过ssh成功复制之后存档文件。

另一个提示:也许你想tar文件,并通过networking发送压缩档案? 这可能会节省您的SSH握手时间(并使用SSH密钥!不要保存脚本中的密码,你会离开!)