首页 > 解决方案 > 如何通过 find 命令找到当前目录的文件?

问题描述

我试过这个命令:

cd ~/Desktop
sudo find /tmp -name *file.doc* -exec 'mv "{}" ./file.docx' '{}' \;

但错误:

find: mv "a b cfile.docx" ./file.docx: No such file or directory'

但是 mv 命令看起来就像它应该的那样(第一个 arg - 在/tmpdir 中找到的引用文件,第二个 arg - 当前目录中该文件的新名称 - 这mv SOURCE DEST是正确的)。如果我在/tmp目录中执行它 - 它会起作用,那么为什么会出现错误?

标签: bashshellfind

解决方案


Find 正在尝试执行该文件'mv "a b cfile.docx" ./file.docx',但没有这样的文件。

这是正在发生的事情:

$ 'mv "a b cfile.docx" ./file.docx'
-bash: mv "a b cfile.docx" ./file.docx: No such file or directory

bash 也找不到我们要求它执行的文件。

意图是执行mv。试试这个固定版本。

  • 我已将 arg 周围的单引号删除为-exec
  • {}到底也不需要。我们只需要在一个地方替换文件
sudo find /tmp -name *file.doc* -exec mv "{}" ./file.docx \;

推荐阅读