Shell

將今天創建的沒有 FIND 命令和 SFTP 的文件複製到另一台伺服器

  • August 21, 2018

我有一個目錄,其中包含“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

引用自:https://unix.stackexchange.com/questions/289873