我在 macOS 上构建的 Travis CI 中运行以下命令来删除所有非.git
目录:
$ if [ "${TRAVIS_OS_NAME}" = "osx" ]; then find /usr/local/Homebrew \! -regex ".+\.git.+" -delete; fi
它给出的输出是:
find: -delete: /usr/local/Homebrew: relative path potentially not safe
为什么我的/usr/local/Homebrew
路径被视为相对路径?
答案1
从这个答案在 Unix 和 Linux SE 上:
macOS
find
基于旧版本的 FreeBSDfind
,它-delete
不会删除作为参数给出的文件。[…]
那是2013 年 FreeBSD 中发生了变化,但这一变化显然并未影响到 macOS。
具体来说,在您的例子中,/usr/local/Homebrew
作为 的参数给出find
;因此-delete
无法删除此确切对象。relative path potentially not safe
但该消息具有误导性。链接消息揭示了幕后发生的事情。它还指出:
-mindepth 1
可以通过使用或更改目录并将其作为参数传递给来防止删除作为参数给出的路径名,而不会出现错误.
消息find
。