如果我运行:
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目录后还要搜索它?
find
会尝试在目录中匹配模式。当find
尝试进入目录时,因为它已经被移动了,所以目录不在这里。find "$HOME" -mindepth 1 -maxdepth 1 -type d -name "*foo" -exec mv -vi {} "$HOME"/new_foo \;
find
仅搜索当前目录,而不会在所有子目录中搜索。mkdir old_foo && find . -type d -name "*foo" -print0 | xargs -0 -I {} mv {} new_foo
1
,它会给我带来麻烦。 - jxramos