文件传输脚本

文件传输脚本

这是我为从目录传输特定类型的文件而创建的脚本。我正在努力寻找一种方法将文件移动到具有当前时间戳的存档目录。

#!/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

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

答案1

尝试

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

答案2

尝试:

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

如果您喜欢不同的时间戳或文件名,则可以使用此主题的变体。请注意,此解决方案不够强大,无法处理多个文件名。

答案3

为华纳的答案添加一个基本名称:

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

答案4

您可能需要使用basename命令来剥离完整的文件路径。

您可能还想使用数组来生成稍后要移动的文件列表;甚至使用选项-execfind例如:

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

(别忘了\;最后的)

&&仅当 ( ) 通过 ssh 成功复制后,该行才会存档文件。

另一个提示:也许您想要tar文件并通过网络发送压缩档案?这可能会为您节省 ssh 握手时间(并使用 ssh 密钥!不要将密码保存在您将留下的脚本中!)

相关内容