如何在 `find` 命令的额外 -exec 选项中表达所有 files/directories?

How to express all files/directories at the extra -exec option of `find` command?

我的任务是将多个目录中具有特殊名称的所有文件复制到目标目录。

所以我建立这个目录来测试我的命令。测试目录树如下所示:

.
├── dir1
│   └── file1
└── test

我打算将 dir1 中的所有文件 mv 到测试的命令是:

find . -type d -name "*dir*" -exec mv {}/* test \;

然后我得到:

mv: rename ./dir1/* to test/*: No such file or directory

我猜这是因为在那个额外的 -exec 表达式中,命令没有将 * 视为通配符。

所以我做了:

find . -type d -name "*dir*" -exec mv {}/file1 test \;

成功移动 file1 进行测试。

但关键是,我现在需要所有文件的表达式,这样我才能完成这个文件传输工作。

find -exec命令组中应该怎么表达?

如果您只想从任何 dir* 移动文件(* 表示 dir 后跟任何其他字符作为通配符),您可能希望使用 -type f , 意思是 files:

find dir* -type f -name "*" -exec mv {} test \;

-type dfind 表明您正在指定一个目录。