我有一项任务是将具有特殊名称的多个目录中的所有文件复制到目标目录。
所以我构建这个目录来测试我的命令。测试目录树如下所示:
.
├── 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
命令组中表达它?
答案 0 :(得分:1)
如果您只打算从任何dir*
移动文件(*表示dir
后跟任何其他字符作为通配符),您可能需要使用-type f
,意思是files
:
find dir* -type f -name "*" -exec mv {} test \;
-type d
向find
表示您正在指定目录。