【问题标题】:find -exec mv tells me No such file or directoryfind -exec mv 告诉我没有这样的文件或目录
【发布时间】:2018-01-15 07:40:48
【问题描述】:

如果我跑步:

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: No such file or directory

为什么find 已经移动了目录 old_foo 之后才搜索它?

【问题讨论】:

    标签: unix find mkdir mv


    【解决方案1】:

    这似乎类似于这里的问题:Why does find -exec mv {} ./target/ + not work ? (on cygwin)

    正如作者所指出的,您可以使用 gnu mv

    我个人更喜欢使用如下所示的 xargs:

    mkdir old_foo && find . -type d -name "*foo" -print0 | xargs -0 -I {} mv {} new_foo
    

    【讨论】:

      【解决方案2】:

      对于您的问题,我认为find 也尝试匹配目录内的模式。 当find尝试进入目录内部时,目录不在这里,因为他已经被移动了。

      你可以看到,如果你使用:

      find "$HOME" -mindepth 1 -maxdepth 1 -type d -name "*foo" -exec mv -vi {} "$HOME"/new_foo \;
      

      该命令强制find 留在您的库中,而不是在您的所有库中探索。

      【讨论】:

        猜你喜欢
        • 2019-09-06
        • 2019-03-04
        • 2013-05-17
        • 2018-02-10
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        • 2022-11-10
        • 1970-01-01
        相关资源
        最近更新 更多