linux - 找到文件后如何复制

标签 linux bash maven

我正在尝试创建一个将执行以下操作的脚本 1- 执行 mvn clean 2- 执行 mvn 包 3- 找到 .jar 文件并将其移动到在命令行上作为 arg 传递的目标文件夹

#!/bin/bash
destination=“$1”

#Clean
mvn clean

#Package
mvn package

#Transfer the generated jar file to the destination folder
find . -name “*.jar” | xargs cp -t $destination

这可以正常运行 Maven 脚本,但是当我转到目标文件夹时,文件没有被复制。 我知道 .jar 文件在那里,并且在我打印出 find 的结果时找到了。 -名称“*.jar”:

./target/QuoteTool-0.0.1-SNAPSHOT.jar

但是复制文件的步骤没有正确发生。

非常感谢任何帮助。

注意:我用的是Mac

最佳答案

您不需要使用 xargs,只需在 find 命令本身中使用 -exec 选项即可。

还有 Unicode Windows 风格的双引号(参见 Unicode Utilities ),“*.jar” 应该用作 "*.jar"

find . -type f -name "*.jar" -exec cp -t "$destination" "{}" +

在上面的示例中,cp+ over exec避免 fork cp 用于找到的每个 jar 文件,而是一次性将找到的所有文件复制到目标位置。

关于linux - 找到文件后如何复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212515/

相关文章:

python - 在 mailx 中将 s3 文件作为附件发送

php - Web 服务器免受入侵的安全性(仅用于 Web 服务)

linux - 基本 Bash 备份脚本

java - 对于多模块 Maven 项目,Maven 依赖项未出现在 Eclipse 中

java - 多模块 Maven 项目中的 log4j

c - linux在内核源码中加入printk语句后开机挂掉

linux - 无法从终端 R 启动 R 帮助文档

bash - 在 bash 中设置名称未知的变量

linux - 此批处理代码如何创建不需要的文件

java - 哪个版本的 Java 可与 Liquibase Maven 插件配合使用?