ошибка «потенциально небезопасный относительный путь» с «find… -delete» в macOS

Вероятно, проблема с вашим видеодрайвером. Я решил это, следуя (измененным) инструкциям на http://ubuntuforums.org/showthread.php?t=2072420 :

  • Нажмите Alt + F2 ] для переключения на новую консоль
  • sudo apt-get purge xserver-xorg-video-intel затем перезагрузите
  • sudo apt-get install xserver-xorg-video-intel
  • nano / etc / X11 /xorg.conf, удалите любой существующий код (если применимо) и введите следующее:

     Раздел «Устройство» 
    Идентификатор «Card0» 
    Драйвер «Intel» {{1} } Option "AccelMethod" "sna" 
    EndSection 
     
  • Сохраните файл и перезагрузитесь

4
30.01.2019, 14:24
6 ответов

macOS findоснована на более старой версии FreeBSD find, которая -deleteне удаляла файлы, указанные в качестве аргумента.

Когда вы делаете:

find dir/*... -delete

Ваша оболочка расширяет этот dir/*глобус в список путей к файлам, (исключая скрытые, в то время как findсам не будет исключать скрытые файлы, которые он находит в любом из этих каталогов. ), поэтому findполучает что-то вроде:

find dir/dir1 dir/dir2 dir/file1 dir/file2...... -delete

Если dir/file1соответствует macOS find, -deleteоткажется удалять его. Однако он с радостью удалит dir/dir1/.somefile, если он совпадает.

Это было изменено в FreeBSD в 2013 году , но очевидно, что это изменение не попало в macOS. Здесь обходной путь прост :используйтеfind dir(или find dir/, если вы хотите разрешить dirбыть символической ссылкой на каталог и findспускаться в него )вместо find dir/*. Итак, в вашем случае:

find ~/Library/MobileDevice/Provisioning\ Profiles/ \
  -exec grep -l "text to search for" '{}' \; -delete

Или используйте более эффективный grep -l --null | xargs -0подход .

14
27.01.2020, 20:47

Попробуйте :find ~/Library/MobileDevice/Provisioning\ Profiles/ -type f -name "name to match" -delete

Изменить -первый код не является ответом на вопрос,попробуй это :find ~/Library/MobileDevice/Provisioning\ Profiles/ -type f -exec grep -l --null "pattern in file" {} + | xargs -0 rm

2
27.01.2020, 20:47

Это поиск строки errво всех файлах в /var/log/рекурсивно.

Я не уверен, что cut, uniqи xargsдоступны на Mac, и это не использует find.

grep -r "err" /var/log/ | cut -d: -f1 | uniq | xargs echo

Замените echoна rm, чтобы удалить файлы.

0
27.01.2020, 20:47

Я столкнулся с этой проблемой в macOS, удаляя все , кроме архивов из дерева каталогов:

find top ! -name "*.tar.gz" -print -delete
... snip...
top
find: -delete: top: relative path potentially not safe

Решение заключалось в добавлении -mindepth 1для исключения верхнего каталога

find top/path -mindepth 1 ! -name "*.tar.gz" -print -delete
8
16.03.2020, 08:43

Вам нужно изменить звездочку(*)в пути к папке (сразу послеfind)на точку(.)

т. е. find dir/*... -delete==>find dir/.... -delete

0
22.05.2020, 12:04

Для меня это просто работало, используя -параметр имени (find <root_dir> -name <glob_pattern>), вместо использования подстановки в самом корневом пути:

find./tmp -name "*.json" -ctime +60s -type f -delete

благодаря этому ответу здесь на этой же странице для вдохновения;)https://unix.stackexchange.com/a/573178/411724

0
08.05.2021, 00:28

Теги

Похожие вопросы