我正在尝试创建一个脚本,该脚本将查找特定文件名的文件,将文件复制到该文件的位置,然后删除找到的文件。
现在忽略删除部分,这就是我到目前为止所拥有的:
find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" `dirname {}` \;
不幸的是,我似乎无法让它正确评估目录名,因为它返回“。”对于它找到的文件的任何实例。
答案1
find
的-execdir
行动似乎更合适:
find /path/to/searchdir -name file.rtf -execdir cp -v /path/to/filetocopy.rtf . \;
cp
这将从找到的包含名为 的文件的每个目录中运行file.rtf
,因此每次运行时都会.
看到cp
相应的目录。cp
然后您可以添加-delete
或删除该文件(检查一切正常后)。
您的方法不起作用的原因是外壳程序dirname {}
在运行之前进行评估find
并dirname {}
输出.
。所以
find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" `dirname {}` \;
变成
find /path/to/searchdir -name "file.rtf" -exec cp -v "/path/to/filetocopy.rtf" . \;