bash - 如何通过 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 - 在/tmp
dir 中找到的引用文件,第二个 arg - 当前目录中该文件的新名称 - 这mv SOURCE DEST
是正确的)。如果我在/tmp
目录中执行它 - 它会起作用,那么为什么会出现错误?
解决方案
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 \;
推荐阅读
- java - 使用 Google Maps API 在 Android 中查找设备当前位置的纬度和经度值
- php - 如何使用帖子上的简码调用帖子对象(产品)自定义字段
- ios - Flutter 无法在 vscode 2020 上构建 iOS
- drupal - Drupal 8 - 如何检测是否已创建任何联系表单?
- button - 如何在 Wiring 中按一个按钮来循环通过功能?
- python - 在熊猫矩阵[python]中添加和填充值为0的缺失列
- c# - 在 C# 中读取 EDF+ 文件
- android - 使用 Android Dagger Hilt 在单个流中跨片段共享数据
- regex - 删除 PostgreSQL 中的所有 Unicode 空格分隔符?
- ssh - 如何在 CentOS 8 和 putty 上设置无密码 SSH