如何在`find`命令的extra -exec选项中表达所有文件/目录?

时间:2015-01-16 03:50:06

标签: regex command-line find

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

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

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

我想要将dir1中的所有文件命名为test的命令是:

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移至test。

但关键是,我现在需要所有文件的表达式,以便我可以完成此文件传输工作。

我应该如何在find -exec命令组中表达它?

1 个答案:

答案 0 :(得分:1)

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

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

-type dfind表示您正在指定目录。