>

다음과 같은 특정 텍스트가 포함 된 모든 파일을 삭제하려고합니다 :

$ find ~/Library/MobileDevice/Provisioning\ Profiles/* -exec grep -l "text to search for" '{}' \; -delete
/Users/build/Library/MobileDevice/Provisioning Profiles/06060826-3fb2-4d71-82c6-7b9d309b08d6.mobileprovision
find: -delete: /Users/build/Library/MobileDevice/Provisioning Profiles/06060826-3fb2-4d71-82c6-7b9d309b08d6.mobileprovision: relative path potentially not safe

그러나 알 수 있듯이 경고 메시지가 표시되고 파일이 삭제되지 않습니다. 이 오류를 어떻게 해결할 수 있습니까?

이것은 Mac에 있습니다.

  • 답변 # 1

    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 를 삭제합니다  그래도 일치하면

    2013 년에 FreeBSD에서 변경되었지만, 그 변경은 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 를 사용하십시오  접근하십시오.

  • 답변 # 2

    시도 : 와이즈 비즈

    편집-첫 번째 코드는 의심의 여지가 없으므로 다음을 시도하십시오. 와이즈 비즈

  • 답변 # 3

    문자열 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 의 모든 파일에서  재귀.

    err 인지 확실하지 않습니다 /var/log/  그리고 cut  Mac에서 사용할 수 있으며 uniq 를 사용하지 않습니다 .

    xargs
    
    

    와이즈 비즈 교체   find 와 함께  파일을 삭제합니다.

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

  • 이전 xfce - Ubuntu 및 터치 이벤트 매핑을위한 2 개의 터치 스크린
  • 다음 linux - AllowTcpForwarding을 no로 설정하여 ssh 전달하는 방법은 무엇입니까?