大家下午好,我們有以下內容:
- 在服務器 X 上,我們每 15 分鐘(通常)生成一些檔案。此檔案有 2 種型別 - .csv 和 .log
- 我們需要抓取最近的 2 個檔案并將它們帶到服務器 Q 中,對其進行決議以洗掉“:”并將其替換為“-”,例如;
- 將它們加載到 ftp 服務器中;
代碼現在是這樣的:
`#!/bin/bash
X=ip.address
USER=myuser
SRC_DIR=/home/user/GETFILES/temp/
DEST_DIR=/home/user/GETFILES/input
date1=`date %Y%m%d%H%M`
echo "======================================="
echo "======================================="
echo "======================================="
echo "Here we go $date1 !"
echo "======================================="
echo "======================================="
echo "======================================="
rsync -av --ignore-existing --include="patternforfiles\*.*" --exclude="*" -e "ssh -p port -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" $USER@$X:$SRC_DIR\* $DEST_DIR
\#Removing the ":"
cd temp/
for i in *:*; do
mv -- "$i" "${i//:/\-}"
done
**for i in `ls -Art SRC_DIR | grep filename | tail -n 2`;do**
**mv $SRC_DIR$i $DEST_DIR;**
**done**
sshpass -p "password" sftp -oPort=port [email protected] \<\< !
lcd /source/directory/
put filename\*.\*
bye
!`
bla bla 清潔任務
如果我作為單獨的命令運行 ls -Art 部分作業正常,它會為我帶來 rsync 路徑中的最后兩個檔案。如果我在腳本下運行,它會帶來 2 個其他檔案,然后是使用上一個命令獲得的檔案……不知道為什么。我在 ls 中缺少什么?
謝謝。
uj5u.com熱心網友回復:
建議在命令中每行有一個以上的檔案ls -Art。
dudi@IL105567WIN:~$ ls -Art
.profile .landscape .sudo_as_admin_successful dev .motd_shown .lesshsQ
.bashrc .vimrc .local .selected_editor .hushlogin .viminfo
.bash_logout .vim .cache .config .lesshst .bash_history
使用ls帶有選項的命令-1或-l通過在單獨的行中列印每個檔案來解決此問題。
dudi@IL105567WIN:~$ ls -1Art
.profile
.bashrc
.bash_logout
.landscape
.vimrc
.vim
.sudo_as_admin_successful
.local
.cache
dev
.selected_editor
.config
.motd_shown
.hushlogin
.lesshst
.lesshsQ
.viminfo
.bash_history
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455980.html
