自动将传入文件复制到多个文件夹然后删除源文件

自动将传入文件复制到多个文件夹然后删除源文件

我想知道将源文件从目录复制到多个目录的自动脚本,以及在复制文件后从源目录中删除源文件的自动脚本

我们有一个文件夹,里面存放着 .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]

相关内容