cp 在查找操作中未正确评估目录名

cp 在查找操作中未正确评估目录名

我正在尝试创建一个脚本,该脚本将查找特定文件名的文件,将文件复制到该文件的位置,然后删除找到的文件。

现在忽略删除部分,这就是我到目前为止所拥有的:

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 {}在运行之前进行评估finddirname {}输出.。所以

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" . \;

相关内容