我想逃跑

find ./ -name "*.xyz" -o -name "*.abc" -exec cp {} /path/i/want/to/copy/to

实际上,这是一个更大的名字扩展列表,但我不知道这对这个例子有什么影响.基本上我想把所有找到的都复制到另一个/path/I/want/to/copy/to.然而,它似乎只是在执行列表中的姓氏测试.

如果删除-exec部分,我希望找到的所有文件变体都会打印出来.

如何让它将找到的全部文件传递给-exec?

推荐答案

find通过计算你给出的表达式,直到它可以确定整个表达式的真值(真或假).在你的例子中,你基本上是在做下面的事情,因为默认情况下,它会把表达式放在一起.

-name "*.xyz" OR ( -name "*.abc" AND -exec ... )

参考手册:

GNU查找搜索

这意味着,如果名称匹配*.xyz,它甚至不会try 判断后一个-name测试或-exec,因为它已经是真的.

你要做的是强制优先,你可以用括号来做.令人恼火的是,您还需要使用反斜杠在shell上避开它们:

find ./ \( -name "*.xyz" -o -name "*.abc" \) -exec cp {} /path/i/want/to/copy/to \;

Linux相关问答推荐

将参数#0更改为shell脚本不工作

在程序集x86_64中跳转后调用ret时出现分段故障

在64位Linux Mint 21.2 Mate上呈现nvim中的文本对象时出现问题

仅使用Find搜索32字符长的目录

Git - 打印以不同编码混合的文件

为什么库中不调用全局变量的构造函数?

如何使用 sed 和 awk 命令提取模式?

如何恢复已停止的进程?

当 skylake 有 fsgsbase 时,为什么使用 __builtin_ia32_wrfsbase64 会收到非法指令?

如何在linux中将2个不同大小的图像(边框,实际图像)合并为1个

查找更高版本的文件

如何使用该位置的相对路径在单个位置创建多个文件夹?

从 Linux 到 Windows 交叉编译 C++ 应用程序的手册?

使用 RPATH 但不使用 RUNPATH?

为什么 XGrabKey 会生成额外的聚焦和聚焦事件?

你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

使用 cmake 构建错误:找不到 -lpthreads

Bash:在文件中的特定位置插入一行

readelf vs. objdump:为什么都需要

Linux 上的 OpenVPN:在命令行中传递用户名和密码