rm -rf가 디렉토리 수준에서 한 번만 확인을 요청하도록 하려면 어떻게 해야 합니까?

rm -rf가 디렉토리 수준에서 한 번만 확인을 요청하도록 하려면 어떻게 해야 합니까?

를 사용하면 rm -rfi각 파일을 삭제할 때마다 묻습니다. 명령 목록이 있는 경우 rm -rf컴퓨터에서 한 번만 확인을 요청하도록 하려면 어떻게 해야 합니까(디렉토리 자체를 삭제하려고 할 때)?

답변1

일부 rm구현(DragonFly BSD, 최소한 FreeBSD 및 GNU)의 경우 -I(대문자 i)가 원하는 것입니다. -i파일별로 확인이 필요하며, -I3개 이상 파일 또는 반복 삭제 시에는 (대문자 i) 한 번 확인이 필요합니다.

답변2

zsh -c 'rm -f -- **/*(^/)'
rm -ri -- *

이는 디렉터리( ) 가 아닌 **/모든 항목을 재귀적으로( ) 삭제한 다음 기존 셸을 사용하여 나머지 내용(디렉토리)을 대화식으로 삭제합니다. 초기 삭제에 도트 파일을 포함하려면 다음을 사용하십시오.*^/zsh

zsh -c 'rm -f -- **/*(D^/)'

다음은:

rm -ri -- *

답변3

아래 코드 조각은 한 번 확인을 요청한 다음 전체 디렉터리를 삭제합니다.'path/to/delete'

  1. 사용자에게 답변을 표시 read -p 'question ' answer하고 답변을 변수에 저장하는 데 사용됩니다. (후행 공백은 프롬프트를 더 읽기 쉽게 만듭니다)'question '${answer}'question '
  2. [ ]문자열 항등 연산자와 함께 테스트 절을 사용하여 변수에 다음이 포함되어 있는지 =확인하세요.${answer}'expected answer'
  3. &&단계가 실패한 경우(예: [Ctrl]+[C]중단 read하거나 테스트 절이 [ ]true가 아닌 경우) 및 연산자를 사용하여 중지합니다.
  4. 글을 쓰기 전에 rm -rf상황이 심각하게 잘못될 수 있는 시나리오를 생각해 보세요. 위험을 최대한 줄이는 방법을 브레인스토밍하세요.
  5. 위의 조건이 모두 충족되면 디렉토리를 강제로 삭제합니다.rm -rf
PATH_TO_DELETE='path/to/delete'
read -p "Delete path '${PATH_TO_DELETE}'? [y/N] " YN && [ "${YN}" = 'y' ] && rm -rf "${PATH_TO_DELETE}"

답변4

시도해 보세요. 아마도 미친 해결책일 수도 있지만 어쨌든 공유하고 싶다고 생각했습니다!

function rm_ {
   [[ -d "$1" ]] && rm -rI "$1" || rm -f "$1"
}

그런 다음 아무것도 얻지 rm_ <directory|file>못하면 . 을 사용하면 파일이 삭제됩니다.directoryrm: remove all arguments recursively?

이런 방식으로 파일을 삭제할 때는 사용자에게 메시지가 표시되지 않지만 디렉터리를 삭제할 때는 메시지가 표시됩니다.

만 사용 하는 경우 rm -rI사용자에게 파일 및 디렉터리에 대한 확인 메시지가 표시되므로 rm -f및 를 조합 하여 사용했습니다 rm -rI.

관련 정보