모든 홈 디렉토리를 (거의) 삭제했습니다!
rm -r something
재귀 에서 /에있는 파일 및 디렉토리 삭제 무언가를 ; 다른 사용자가 소유 root
했거나 (예 : GVFS 마운트) 삭제 권한이없는 항목에 대해서만 실패합니다 .
-f
(에서와 같이 rm -rf something
) 추가하지 않으면 다음과 같은 결과가 나타납니다.
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
이 시점에서 중단하면 잘못된 명령을 실행했음을 알 수 있습니다.
그러한 사고를 피하는 방법에 대한 지역 사회의 제안
참고 : 커뮤니티 위키, 누구나 부담없이 참여하십시오.
일부 파일의 경우 -i
옵션을 사용하여 파일 또는 디렉토리 제거에 대한 확인을 받으십시오.
$ rm -ri something/
rm: remove regular file ‘something/file~’? y
rm: descend into directory ‘something’? y
rm: remove regular file ‘something/file’? y
rm: remove directory ‘something’? y
현재 디렉토리에서 ./
제거하는 경우 다른 위치를 잘못 제거하지 않도록 접두사 a 를 붙입니다 . :
$ cd something
$ rm -v ./*~
removed ‘./file~’
위의 사용을 보여주기위한 것입니다 ./
. 하위 디렉토리가 있으면 물론 사용할 수도 rm -v something/*~
있습니다. 주의 : rm ./.*
현재 디렉토리의 모든 숨겨진 파일 을 제거 한다고 생각하지 마십시오 . 숨겨진 파일 글 로빙에 대한 해결 방법 은 이 Serverfault 질문 을 참조하십시오 .
삭제하지 않고 이동 : 처음부터 파일을 재귀 적으로 삭제하는 대신 파일을 이동 하는 데 익숙해 져서 마지막으로 삭제하기 전에 다른 곳을 제거하고 싶습니다. 문제가 발생하면 쉽게 복원 할 수 있습니다.
mv -b SOURCE DEST
선택한 파일을 재귀 적으로 삭제하려면 미리보기로find
(을 사용 하여 grep
) 사용하십시오 . 당신은 이것을 드물게 만들려고 노력해야하지만, 당신이해야한다면 ...
find
인수없이 현재 파일 아래의 모든 파일 / 디렉토리를 재귀 적으로 나열합니다. man find
선택적인 방법 (보물 통) 을 찾는 방법 을 찾아봐야 하지만 귀찮게하고 싶지 않다면 친숙한 grep
것을 사용하여 삭제하려는 파일을 필터링하면됩니다.
- 내가 uber-l33t 커널 해커라고 가정하고 소스 트리에 몇 KB의 "예제"파일이 있다고 가정합니다. 이름에 포함 된 모든 파일을 삭제하고 싶습니다. 그래서 나는 20 개의 파일
find | grep example
을 제공하는을 입력 합니다. 그것은 좋아 보인다. 이제 나는 rm -v
이전에 언급 한 자세한 출력 과 함께 정확한 파일을 삭제한다 xargs
.
찾기 | grep 예제 | xargs rm -v
이 출력
을 제공 합니다. 이러한 미리보기는 sample
대신 오타와 유형을 만드는 문제를 방지합니다 example
.
공백, 탭 문자, 줄 바꿈 또는 따옴표 ( "
또는 '
)가 포함 된 파일 이름이있는 경우 위의 해결 방법을 사용하지 않아야합니다. 이로 인해 xargs
실패하거나 rm
불완전한 파일 이름 이 제공되므로 최악의 경우 잘못된 항목을 제거 할 수 있습니다. 파일. 위의 작업을 수행하는 안전한 방법은 모든 find
연산자와 작업을 수행하는 것입니다.
다음은 단어가 포함 된 모든 파일을 보여줍니다 example
find . -name "*example*"
해당 목록이 제거하려는 파일 인 경우 -exec
조치를 사용 하여 파일을에 전달하십시오 rm
.
find . -name "*example*" -exec rm -v {} +
사용에 대한 자세한 내용은 찾기 사용을 참조하십시오 find
.