를 사용하면 rm -rfi
각 파일을 삭제할 때마다 묻습니다. 명령 목록이 있는 경우 rm -rf
컴퓨터에서 한 번만 확인을 요청하도록 하려면 어떻게 해야 합니까(디렉토리 자체를 삭제하려고 할 때)?
답변1
일부 rm
구현(DragonFly BSD, 최소한 FreeBSD 및 GNU)의 경우 -I
(대문자 i)가 원하는 것입니다.
-i
파일별로 확인이 필요하며, -I
3개 이상 파일 또는 반복 삭제 시에는 (대문자 i) 한 번 확인이 필요합니다.
답변2
zsh -c 'rm -f -- **/*(^/)'
rm -ri -- *
이는 디렉터리( ) 가 아닌 **/
모든 항목을 재귀적으로( ) 삭제한 다음 기존 셸을 사용하여 나머지 내용(디렉토리)을 대화식으로 삭제합니다. 초기 삭제에 도트 파일을 포함하려면 다음을 사용하십시오.*
^/
zsh
zsh -c 'rm -f -- **/*(D^/)'
다음은:
rm -ri -- *
답변3
아래 코드 조각은 한 번 확인을 요청한 다음 전체 디렉터리를 삭제합니다.'path/to/delete'
- 사용자에게 답변을 표시
read -p 'question ' answer
하고 답변을 변수에 저장하는 데 사용됩니다. (후행 공백은 프롬프트를 더 읽기 쉽게 만듭니다)'question '
${answer}
'question '
[ ]
문자열 항등 연산자와 함께 테스트 절을 사용하여 변수에 다음이 포함되어 있는지=
확인하세요.${answer}
'expected answer'
&&
단계가 실패한 경우(예:[Ctrl]+[C]
중단read
하거나 테스트 절이[ ]
true가 아닌 경우) 및 연산자를 사용하여 중지합니다.- 글을 쓰기 전에
rm -rf
상황이 심각하게 잘못될 수 있는 시나리오를 생각해 보세요. 위험을 최대한 줄이는 방법을 브레인스토밍하세요. - 위의 조건이 모두 충족되면 디렉토리를 강제로 삭제합니다.
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>
못하면 . 을 사용하면 파일이 삭제됩니다.directory
rm: remove all arguments recursively?
이런 방식으로 파일을 삭제할 때는 사용자에게 메시지가 표시되지 않지만 디렉터리를 삭제할 때는 메시지가 표시됩니다.
만 사용 하는 경우 rm -rI
사용자에게 파일 및 디렉터리에 대한 확인 메시지가 표시되므로 rm -f
및 를 조합 하여 사용했습니다 rm -rI
.