自動將傳入檔案複製到多個資料夾,然後刪除來源檔案

自動將傳入檔案複製到多個資料夾,然後刪除來源檔案

我想知道用於將來源文件從目錄複製到多個目錄的自動腳本,並在複製文件後從來源目錄中刪除來源文件

我們有一個資料夾,其中包含 .xml 檔案。所以第一步我想將這些檔案從這個來源資料夾複製到另外兩個資料夾,也就是資料夾一和資料夾二。資料夾一僅用於保留檔案作為備份目的,資料夾二是執行另一個腳本以根據我們的要求拆分 xml 檔案。複製文件後從來源資料夾中刪除文件

問候

答案1

以下 bash 腳本將監視來源目錄中是否有傳入的新檔案(即它不會複製或刪除任何預先存在的文件)並將它們複製到兩個目標目錄,然後刪除它們...您需要運行腳本並保持其運行,然後才能開始在來源目錄中接收任何新檔案(即該腳本僅在已經運行時才會捕獲新傳入的文件) ...該腳本使用inotifywait您需要先安裝sudo apt install inotify-tools... 請閱讀腳本中的註解並先指定路徑:

#!/bin/bash

# Specify the full path to the source directory in the line below (keep the last "/").
source_d="/full/path/to/directory/"

# Specify the fullpath to the first destination directory in the line below (keep the last "/").
destination_d1="/full/path/to/directory1/"

# Specify the full path to the second destination directory in the line below (keep the last "/").
destination_d2="/full/path/to/directory2/"

inotifywait -m -q -e close_write "$source_d" |

  while read -r path action file; do
    cp -- "$path$file" "$destination_d1$file"
    cp -- "$path$file" "$destination_d2$file"
    rm -- "$path$file"
  done

答案2

使用cpN-1次,最後使用mv第N次。

cp [files] [folder1] 
cp [files] [folder2]
...
cp [files] [folderN-1]
mv [files] [folderN]

相關內容