我有一个包含文件和子目录的目录。我只想复制目录中的文件,所以我运行
cp -v src/* dst/
并得到错误cp: -r not specified; omitting directory
。我可以忽略它,但如果-e
设置了 bash 标志,该命令将失败。
-e
假设我不想递归复制并且我想要标记,我该如何避免我的脚本失败?我唯一能想到的就是使用find -type f -maxdepth... -exec cp...
,但它看起来太重了。有更简单的方法吗?
ps 我知道-e
底部的岩石,谢谢。
在您的脚本中设置但仍然有您知道会产生错误的命令的一种常见技术
-e
是使它们成为条件命令的一部分,例如此构造永远不会产生会导致脚本退出的错误。不需要花哨的编程,它适用于许多命令,而不仅仅是
cp
示例。启用“扩展 glob”(shopt -s extglob) 后,用于
src/!(*/)
匹配所有项目,除了那些将匹配的项目src/*/
(目录或目录的符号链接)。另一种复制特定文件的常用方法是
cpio -p
,find src/ [...] | cpio -p dst/
.