Shell
將今天創建的沒有 FIND 命令和 SFTP 的文件複製到另一台伺服器
我有一個目錄,其中包含“n”個文件。我正在嘗試編寫一個 shell 腳本,它將僅列出在腳本執行的特定日期創建的文件,並將
sftp
用於將當天列出的文件移動到另一台伺服器。我不想使用find
.我嘗試使用
ls -l --time-style=+%D | grep $(date +%D) | grep -v '^d'
列出今天創建的文件。如何將列出的文件複製到另一個目錄,以便我可以
sftp
將該目錄複製到另一台伺服器。我嘗試了以下命令,但沒有用ls -l --time-style=+%D | grep $(date +%D) | grep -v '^d' > /home/oracle/SABARISH/logs/files/
以及如何
sftp
使用shell腳本,我sftp
在命令行中嘗試過,但在腳本中使用時有所不同。
你可以這樣做:
files=$( ls -l --time-style=+%D | grep $(date +%D) | grep -v '^d' | awk '{print $NF}' ) ; for f in $files ; do cp -rf $f /home/oracle/SABARISH/logs/files/ ; done ; sftp {user}@{host}:{remote_dir} <<< 'put /home/oracle/SABARISH/logs/files/*'
或類似地:
for f in $(ls -l --time-style=+%D | grep $(date +%D) | grep -v '^d' | awk '{print $NF}') ; cp -rf $f /home/oracle/SABARISH/logs/files/ ; done ; sftp {user}@{host}:{remote_dir} <<< 'put /home/oracle/SABARISH/logs/files/*'
awk 用於提取文件名。
#!/bin/bash FILES=$(ls -l test1_*.txt --time-style=+%D | grep ${DATE} | grep -v '^d' | awk '{p rint $NF}' ) if [ -n "${FILES}" ] then for f in ${FILES} do cp -prf ${f} ${DESTINATION} done sftp ${USER}@${HOST}:${CD} <<< 'put /home/oracle/SABARISH/logs/sftp/*' else echo "NO FILES TO MOVE" fi