我想知道将源文件从目录复制到多个目录的自动脚本,以及在复制文件后从源目录中删除源文件的自动脚本
我们有一个文件夹,里面存放着 .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
使用cp
N-1次,最后mv
第N次使用。
cp [files] [folder1]
cp [files] [folder2]
...
cp [files] [folderN-1]
mv [files] [folderN]