find -exec mv告诉我找不到文件或目录。

5

如果我运行:

mkdir -p "$HOME"/old_foo && find "$HOME" -type d -name "*foo" -exec mv -vi {} "$HOME"/new_foo \;

我会得到:

/Users/medialab/old_foo -> /Users/medialab/new_foo

但也会得到:

find: /Users/medialab/old_foo: 没有那个文件或目录

为什么find在移动了old_foo目录后还要搜索它?


这条消息很烦人,但对我来说真正的问题是非零返回代码 1,它会给我带来麻烦。 - jxramos
2个回答

4
针对您的问题,我认为find会尝试在目录中匹配模式。当find尝试进入目录时,因为它已经被移动了,所以目录不在这里。
您可以通过使用以下方法来查看:
find "$HOME" -mindepth 1 -maxdepth 1 -type d -name "*foo" -exec mv -vi {} "$HOME"/new_foo \;

该命令强制 find 仅搜索当前目录,而不会在所有子目录中搜索。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接