我的任务是将所有文件从具有特殊名称的多个目录复制到目标目录。
所以我建立了这个目录来测试我的命令。测试目录树如下所示:
.
├── 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进行测试。
但关键是,我现在需要所有文件的表达式,以便可以完成此文件传输工作。
我应该如何在find -exec
命令组中表达这一点?
如果仅打算从任何文件中移动文件dir*
(*表示dir
后跟通配符的任何其他字符),则需要使用-type f
,表示files
:
find dir* -type f -name "*" -exec mv {} test \;
-type d
表示find
您正在指定目录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句