방금 다음 명령을 사용하여 전체 디렉토리를 다른 디렉토리에 복사했습니다.
cp ~/local/* ./
실제로 들어가고 싶은데
cp ~/local/srl* ./
그래서 불필요한 파일이 너무 많아요. 수동으로 억제할 수 있지만 해당 용어에 대한 명령을 실행 취소할 수 있는 방법이 있는지 궁금합니다.
답변1
아니요, 명령을 실행 취소할 수 있는 방법은 없습니다(적어도 보편적으로는 아님). 이는 사용자가 rm
잘못된 정규식을 사용하여 실행하고 삭제하려는 파일보다 더 많은 파일을 덮어쓴다는 사실을 인식하지 못하는 경우 종종 문제가 됩니다.
게다가 터미널에서 명령을 실행 취소하는 것도 실제로 불가능합니다. 이메일을 보내거나 소리를 재생하는 명령을 생각해 보세요. 이 작업을 취소할 수 있는 방법은 없습니다.
다행히도 당신은 도망쳤어요 cp
. 아니죠 rm
.
앞으로는 너무 많은 파일을 이동/삭제/복사하지 않으면 -i
스위치가 "대화형" 모드로 전환하여 각 작업 전에 확인을 요청합니다.
답변2
이러한 명령을 실행 취소하는 일반적인 방법은 없습니다. 그러나 파일을 덮어쓰지 않은 경우 소스 파일 목록을 사용하여 대상에서 제거해야 하는 파일 세트를 식별하는 것은 그리 어렵지 않습니다.
실수로 다음을 실행했습니다.
cp ~/local/* ./
따라서 삭제하려는 파일 세트를 찾으려면 다음과 같이 사용할 수 있습니다.
for SRC in ~/local/*; do DST="${SRC/*\/}"; echo rm "$DST"; done
( DST="${SRC/*\/}"
파일 이름만 남기고 파일 목록에서 경로를 제거합니다.) 올바른 파일 세트가 나열되는 것에 만족하면 ~/local/*
명령에서 해당 경로를 제거하고 다시 실행하십시오.echo
답변3
안전하고 느린 방법:
이 방법에는 폴더를 하나씩 삭제하는 작업이 포함됩니다. 다음 명령을 사용하여 선택한 폴더의 파일을 삭제할 수 있습니다.
rm -rf folder_name
더 빠른 방법:
필요한 파일을 실수로 삭제하지 않으려면 주의해야 합니다.
for SRC in ~/local/*; do DST="${SRC/*\/}"; rm "$DST"; done
답변4
아니요. 일반적으로 터미널 명령은 실행 취소할 수 없습니다.
상황에 따라 다음 특정 파일을 제외한 모든 파일을 쉽게 삭제할 수 있습니다.
shopt -s extglob
rm !(srl*)