rm -i의 기본값으로 "yes"를 설정하는 방법

rm -i의 기본값으로 "yes"를 설정하는 방법

삭제된 파일의 긴 목록을 보고 싶습니다. 별로 중요하지 않기 때문에 실수로 일부 파일을 삭제해도 문제가 되지 않습니다. 하지만 여전히 일부 파일을 저장하고 싶습니다.

전화를 걸고 rm -i ./*프롬프트를 수신 rm: remove regular file 'myfile'?하지만 기본값을 "예"(Y/n)로 설정하려면 어떻게 해야 합니까?

답변1

rm함수든 스크립트든 주변에 자신만의 레이어를 만드는 데 방해가 되는 것은 없습니다 . (저는 개인적으로 스크립트를 선호합니다.)

파일에 복사하고 yrm디렉터리 $PATH(예 /usr/local/bin: )에 넣은 다음 실행 가능하게 만듭니다( chmod a+x /usr/local/bin/yrm).

#!/bin/sh
#
fails=0    # Number of failures is presented as exit status

for item in "$@"
do
    # Skip directories
    if [ -d "$item" ]
    then
        printf '%s: skipping directory\n' "$item" >&2
        fails=$((fails+1))
        continue
    fi

    # Prompt the user
    printf "%s: remove regular file '%s' (Y/n)? " "${0##*/}" "$item" >&2
    read yn || exit $((fails+1))

    # Either no response or "y" is good enough for deletion
    if [ -z "$yn" ] || [ y = "$yn" ]
    then
        rm "$item" </dev/null    # No -f so we expose error messages
        [ $? -gt 0 ] && fails=$((fails+1))
    fi
done

# Report failures (0=success)
exit $fails

그런 다음 플래그와 하나 이상의 파일 없이 호출할 수 있습니다. 예를 들어,

yrm *.txt

답변2

Case 문을 사용할 수 있습니다.

# path of file

file_path=$(ls -ltr | grep "^-" | awk -F" " '{ print $9 }' | grep -i ".txt*")
read -p "enter yes for removing files $file_path" user_inp

# -p :- for user prompt

case ${user_inp}
    in Yes | yes | YES )

        rm  $file_path
        ;;
    *)
        echo "you don't want to delete that file"
esac

관련 정보