bash 별칭이 제대로 작성되지 않았습니다 (작은 따옴표는 잘 사용되지 않음). 대신 다음과 같아야합니다.
alias rm~='find . -name "*~" -print0 | xargs -0 /bin/rm -f'
이제 개인적으로 쓸모없는 파이프 사용을 좋아하지 않으므로 xargs별칭을 다음과 같이 작성하는 것이 좋습니다.
alias rm~='find . -name "*~" -type f -exec /bin/rm -fv -- {} +'
-type f옵션 파일 만 (안 등 디렉토리, 링크)에서 찾을 수 있도록 -v하는 옵션 rm자세한 정보 (무엇의 삭제 밖으로 인쇄) 할 수 있도록로합니다. +끝에 그래서 find실행 rm발견 된 모든 파일과 (하나 개의 인스턴스 만 급부상 rm, 대신 파일 당 하나).
지금부터 man bash:
거의 모든 목적에서 별명은 쉘 기능으로 대체됩니다.
대신 별명으로,이 기능을 사용하는 것이 좋습니다 :에 주석에 별칭 .bash_aliases파일 (즉,을 넣어 #그 라인의 앞에), 그리고 파일 .bashrc이 넣어 기능 (끝이 괜찮 어디서나 파일에) :
rm~() {
find . -name "*~" -type f -exec /bin/rm -fv -- {} +
}
또한 다른 답변에서 언급했듯이 -delete명령을 사용하여 찾을 수 있습니다. 이 경우 rm~기능은 다음과 같습니다.
rm~() {
find . -name "*~" -type f -printf "Removing file %p\n" -delete
}
실제로, 당신은 인수를 취할 멋진 함수를 만들 수 있습니다 --dry-run.
rm~() {
case "$1" in
"--dry-run")
find . -name "*~" -type f -printf "[dry-run] Removing file %p\n"
;;
"")
find . -name "*~" -type f -printf "Removing file %p\n" -delete
;;
*)
echo "Unsupported option \`$1'. Did you mean --dry-run?"
;;
esac
}
그런 다음 다음과 같이 사용하십시오.
rm~ --dry-run
삭제 될 파일 만 표시하고 삭제하지는 않습니다.
rm~
당신이 이것에 만족할 때.
필요에 맞게 조정하고 확장하십시오!
노트. 변경 사항을 적용하려면 새 터미널을 열어야합니다.