这是我创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密钥!不要保存脚本中的密码,你会离开!)