모든 파일을 삭제하기 위해 파이프의 파일 이름을 만드는 방법은 무엇입니까?

모든 파일을 삭제하기 위해 파이프의 파일 이름을 만드는 방법은 무엇입니까?

그래서 다음 파이프를 사용하여 현재 디렉터리의 모든 파일을 삭제하고 싶습니다.

ls | sed -rn 's/(.*)\.jpg$/mv -n & \1.jpeg/pi' | sh

위 파이프라인을 실행하면 라는 파일을 생성하는 방법은 현재 디렉터리의 모든 파일을 삭제합니다. 따라서 코드 삽입을 통해.

이 파일을 생성하는 데 사용된 명령을 제공하십시오.

답변1

위 명령은 (다소 서투르게) 모든 현재 파일의 이름을 *.jpg에서 *.jpeg로 직접 변경합니다. 모든 파일을 삭제하도록 수정할 수 있지만 작업에는 적합하지 않습니다.

그러나 위의 명령이 발견되면 현재 디렉터리의 모든 항목이 삭제되도록 적절한 파일 이름을 만들려고 하는 것 같습니다. 이것은 확실히 달성 가능합니다(비록 동기에 의문을 제기하게 되지만...).

부인 성명:이로 인해 피해를 입을 수 있습니다. 주의할 만한 것을 깨뜨리지 않도록 먼저 테스트하는 것은 모두 당신에게 달려 있습니다. 그리고 당신이 자신의 시스템에서 악의적으로 이 일을 하는 것이 적발되면 대상이 당신에 대해 법적 조치를 취할 것이라고 기대합니다.

이제 이것은 더 이상 문제가 되지 않습니다. sed 입력과 일치하는 파일을 생성하고 싶지만 여전히 원하는 작업을 수행하는 적절한 출력을 생성합니다.

;rm *;.jpg이름이 지정된 파일을 생성합니다(또는 ;rm -rf *;.jpg보다 적극적으로 삭제). sed 부분을 통해 실행하고 다음을 통해 수행되는 작업을 확인할 수 있습니다.

  • echo ";rm * ; .jpg" | sed -rn 's/(.*)\.jpg$/mv -n & \1.jpeg/pi'

편집: 참고로, 나열된 명령은 사용자가 실행할 때 원하는 모든 작업을 (거의) 수행할 수 있습니다. 모든 파일을 삭제하는 것은 이 약점을 이용하는 다소 상상력이 부족한(그리고 파괴적인) 악용입니다. 좀 더 다채로운(그리고 뒤집기 쉬운) 것을 고려해 볼 수 있을까요?

관련 정보