Mac OS X에서 rm 명령이 와일드카드와 함께 작동하지 않습니다.

Mac OS X에서 rm 명령이 와일드카드와 함께 작동하지 않습니다.

Bash 스크립트를 통해 모든 사용자 계정에 대해 아래 파일을 제거하려고 하는데 와일드카드 *가 작동하지 않는 것 같습니다. Mac OS X 터미널에서 스크립트를 실행하여 로컬로 테스트해 왔습니다.

삭제할 Plist 파일: com.apple.eap.bindings.XXXXXXX.plist

#!/bin/bash

for dir in /Users/*;
do
    if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
        rm "${dir}/Library/Preferences/com.apple.eap.bindings.*"
    fi
done

위 코드는 문제의 파일을 삭제하지 않지만 와일드카드 없이 정확한 파일 이름을 가리키면 작동합니다. 따옴표도 제거해 보았으나 여전히 파일이 삭제되지 않습니다. 누군가 도와주실 수 있나요?

답변1

if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then

이 줄에서는 큰따옴표 안에 별표를 넣습니다. 이는 마술처럼 파일 이름으로 확장되는 것이 아니라 리터럴 문자로 만듭니다.

연결:큰따옴표-vs-별표-파일 이름-확장-in-bash게다가이미 Shaun이 가리킨 게시물.

따옴표 없이 별표를 사용해야 합니다. 스크립트의 첫 번째 부분에서나 인수로find.

답변2

이것을 대안으로 생각할 수 있습니다.

#!/bin/bash
/usr/bin/find /Users/*/Library/Preferences -name "com.apple.eap.bindings.*.plist" -exec /bin/rm -fv "{}" \;

이렇게 하면 문제의 파일이 효과적으로 제거됩니다. 출력을 원하지 않으면 'v' 스위치를 제거하십시오.

답변3

이것이 누군가에게 도움이 된다면, 이것이 나에게 효과적인 것입니다:

#!/bin/bash

for dir in /Users/*;
do
    if [ -z "$(echo ${dir}/Library/Preferences/com.apple.eap.bindings.*|grep -q '*')" ]; then
        rm ${dir}/Library/Preferences/com.apple.eap.bindings.*
    fi
done

관련 정보