如何在目录中复制文本文件中未列出的文件

时间:2019-01-09 17:27:32

标签: bash

我在目录中有文件,文件名中带有模式(“ IMP-”)。我需要将文件从目录A复制到目录B。但是我也将文件保留在目录A中。因此,为了只复制目录B中的新文件,我需要在每次执行操作时首先列出复制,将文本文件中的文件名(list.txt),然后仅复制文本文件中未列出的文件。

例如

目录A(/ home / ftp / recep /) 文件,例如可以是:

/home/recep/IMP-avis2018.txt
/home/recep/IMP-avis2018.pdf
/home/recep/IMP-avis2017.jpg
/home/recep/IMP-avis2017.pdf

目录B(/ home / ftp / transfert /)

需要将所有带有IMP *的文件复制到目录B(/ home / ftp / transfert /)。 当在目录A中收到一个新文件时,我需要将此文件(也只有此文件)复制到目录B(其中文件最多保留2小时)

我想也许我可以用rsync来做点什么,但是我找不到合适的选择。 因此,也许它可能是bash脚本。 动作将是:

  1. 具有一个简单的基本文本文件,其中包含已经进行的文件(例如liste.txt)
  2. 在目录A中查找包含模式IMP的文件
  3. 对于每个文件,请阅读liste.txt文件,如果liste.txt中未列出该文件,则将其复制到目录B

1 个答案:

答案 0 :(得分:1)

您可以尝试选项-n。手册页显示:

  

-n,--no-clobber
  不要覆盖现有文件(覆盖先前的-i选项)

所以

cp -n A/* B/

应该将所有文件从A复制到B,但已经在B中的文件除外。

另一种方法是rsync:

rsync -vu A/* B/

这会将文件从A同步到B,并打印实际复制的文件。