查找并复制文件
- 2024-10-22 08:28:00
- admin 原创
- 96
问题描述:
为什么下面没有将文件复制到目标文件夹?
# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} ;
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
解决方案 1:
如果您的目的是将找到的文件复制到中/home/shantanu/tosend
,则需要反转参数的顺序cp
:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend ;
请注意:该find
命令用作{}
匹配文件的占位符。
解决方案 2:
我遇到过类似的问题......
实际上,您可以通过两种方式在命令中处理find
命令输出copy
如果
find
命令的输出不包含任何空格,即文件名中不包含空格,那么您可以使用下面提到的命令:
句法:find <Path> <Conditions> | xargs cp -t <copy file path>
例子:find -mtime -1 -type f | xargs cp -t inner/
但大多数时候我们的生产数据文件可能包含空格。因此大多数时候下面提到的命令更安全:
句法:find <path> <condition> -exec cp '{}' <copy path> ;
例子find -mtime -1 -type f -exec cp '{}' inner/ ;
在第二个示例中,最后一部分,即分号,也被视为find
命令的一部分,应在按下 Enter 按钮之前将其转义。否则,您将收到类似这样的错误
find: missing argument to `-exec'
在你的情况下,复制命令语法错误,无法将 find 文件复制到/home/shantanu/tosend
。以下命令将起作用:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend ;
解决方案 3:
您需要使用cp -t /home/shantanu/tosend
来告诉它参数是目标目录而不是源。然后您可以将其更改-exec ... +
为 以便cp
一次复制尽可能多的文件。
解决方案 4:
要删除特定时间段之间的文件:
find . -type f -newermt 2022-01-01 ! -newermt 2024-01-01 -exec rm {} +
解决方案 5:
出现该错误的原因是您正在尝试复制一个需要 -r 选项的文件夹,并将其复制到 cp 谢谢
解决方案 6:
for i in $(ls); do cp -r "$i" "$i"_dev; done;
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD