[英]How to copy files with a particular extension from one directory to another in linux
[英]Looking for a way to copy missing files from one directory to another
我有两个目录:
/A
包含数千个数据文件/A_BKP
必须包含/A
目录的备份我正在寻找一种方法将未作为备份的一部分复制的文件从/A
复制到/A_BKP
。
/A
目录中的一个小数据集 -
-rw-rw-r-- 1 testu testu 6434570 Jun 5 14:11 ACCOUNT_1622902306293.DAT
-rw-rw-r-- 1 testu testu 2891626 Jun 5 14:11 PRODUCT_1622902306293.DAT
-rw-rw-r-- 1 testu testu 56736348 Jun 5 14:11 EXECUTION_1622902306293.DAT
-rw-rw-r-- 1 testu testu 30209979 Jun 5 14:11 ORDER_VERSION_1622902306293.DAT
-rw-rw-r-- 1 testu testu 114 Jun 5 14:11 1622902306293.DAT
-rw-rw-r-- 1 testu testu 3905808 Jun 5 14:31 ACCOUNT_1622903506439.DAT
-rw-rw-r-- 1 testu testu 1712506 Jun 5 14:31 PRODUCT_1622903506439.DAT
-rw-rw-r-- 1 testu testu 55188313 Jun 5 14:31 EXECUTION_1622903506439.DAT
-rw-rw-r-- 1 testu testu 26857690 Jun 5 14:31 ORDER_VERSION_1622903506439.DAT
-rw-rw-r-- 1 testu testu 114 Jun 5 14:31 1622903506439.DAT
但是/A_BKP
已经
-rw-rw-r-- 1 testu testu 26857690 Jun 5 14:31 ORDER_VERSION_1622903506439.DAT
-rw-rw-r-- 1 testu testu 114 Jun 5 14:31 1622903506439.DAT
所以只想复制那些丢失的。
使用--no-clobber
(或-n
)选项:
cp -t /A_BKP --no-clobber /A/*
如果您收到“参数列表太长”错误,您可能必须这样做
find /A -maxdepth 1 -mindepth 1 -type f -print 0 \
| xargs -0 cp -n -t /A_BKP
-n
如果目标文件存在,则阻止复制。 正如@Jetchisel 评论,如果源文件较新,请使用-u
更新目标文件。
遍历文件,检查是否存在。 ||
用于test
返回false
,然后它将复制。
for file in /A/*.DAT; test -f /A_BKP/`basename $file` || cp $file /A/BKP/; done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.