Mac 下 find 和 mv 组合命令失效的疑问

2023-08-13 21:54:45 +08:00
 sheller

需求描述

把 A 文件夹下(包含子文件夹中的)所有后缀为docx文件移动到/Desktop/filedoc 目录下。

使用命令

在 A 文件夹中执行命令:find ./ -type f -name "*.docx" | xargs -0 mv ~/Desktop/filedoc

但是这个命令并不生效,请问该如何写呢?

660 次点击
所在节点    问与答
6 条回复
guog
2023-08-13 22:09:12 +08:00
find . -type f -name '*.docx' | xargs -I {} mv {} ~/Desktop/filedoc
sheller
2023-08-13 22:14:28 +08:00
@guog 只有一部分成功了,再执行一遍会出现 xargs: unterminated quote 的结果提示呢
guog
2023-08-13 22:26:52 +08:00
@sheller #2 估计是你文件名里面带有引号了吧,手动改下?
lovestudykid
2023-08-13 22:44:36 +08:00
chatgpt 的建议
find ./ -type f -name "*.docx" -print0 | xargs -0 -I {} mv {} ~/Desktop/filedoc
sheller
2023-08-13 23:00:52 +08:00
@guog 对,有很多文件名不规则,有的带引号,有的带空格
@lovestudykid 谢谢我试试
julyclyde
2023-08-14 12:45:04 +08:00
1 xargs 用了-0 但是前面 find 没有-print0
2 mv 命令缺一个参数,那 xargs 默认会把那个参数补到末尾,这样看起来你会用 filedoc 文件覆盖掉各个 find 出来的文件

如果你已经执行过了,建议先考虑一下第二个后果的问题,再继续研究

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/964951

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX