Windows에서 대량의 파일을 삭제하면 속도가 느립니다. 포함 된 폴더를 선택하고 휴지통을

NTFS 디스크가있는 Windows XP 상자가 있으며 많은 양의 파일을 삭제하는 것이 매우 느립니다. 폴더 트리에서 많은 수의 파일이 포함 된 폴더를 선택하고 휴지통을 저장하기 위해 shift-del을 사용하여 삭제하면 폴더 내의 파일 수에 직접 비례하는 것처럼 보이는 데 시간이 걸립니다. 확인 상자가 나타납니다. 그런 다음 폴더의 각 파일을 삭제하는 데 시간이 더 걸립니다.

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?



답변

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?

나는 그렇게 생각하지 않지만 일부 방법은 다른 방법보다 훨씬 빠릅니다.

최악의 방법은 휴지통으로 보내는 것입니다. 휴지통을 삭제해야합니다. 다음 최악의 상황은 Windows 탐색기를 사용한 shift + delete입니다.

다음으로 rmdir /s/q foldername명령 줄에서 사용 하는 것이 가장 좋습니다 .del /f/s/q foldername좋지만 디렉토리 구조 뒤에 남아 있습니다.

내가 찾은 가장 좋은 것은 모든 단일 파일에 대해 화면에 쓰는 오버 헤드를 피하기 위해 파일과 출력을 삭제하는 첫 번째 패스가있는 두 줄 배치 파일입니다. 두 번째 단계는 나머지 디렉토리 구조를 정리합니다.

del /f/s/q foldername > nul
rmdir /s/q foldername

이는 Windows XP 암호화 디스크를 사용한 시간 테스트를 기반으로 단일 rmdir보다 거의 3 배 빠르며 ~ 30GB / 1,000,000 개의 파일 / 15,000 개의 폴더를 삭제합니다. rmdir~ 2.5 시간, del+rmdir~ 53 분이 소요됩니다. 자세한 내용은 여기를 참조하십시오 .

이것은 일반적인 작업이므로 일반적으로 삭제해야 할 항목을 C : \ stufftodelete로 이동하고 해당 del+rmdir명령을 deletestuff.bat 배치 파일에 저장합니다. 이것은 밤에 실행되도록 예정되어 있지만 때로는 낮에 실행해야할수록 빠를수록 좋습니다.


답변

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?

예, 파티션을 포맷하십시오. 나는 지난 9 년 동안 아무도 그 제안을하지 않았다는 것에 약간 놀랐습니다.

상당히 급진적이지만 특정 폴더에 대해이 작업을 자주 수행 할 것으로 예상되는 경우 별도의 파티션을 만드는 것이 좋습니다.


그것이 너무 급진적이라면, 다른 대답은 당신의 유일한 희망입니다. serverfault 에 대한 좋은 설명이 있습니다 . Linux 및 XFS 파일 시스템 용이지만 동일한 논리가 여기에 적용됩니다. 내장 OS 기능을 많이 향상시킬 수는 없습니다.

그러나 삭제하려는 모든 파일의 경로를 알고 있으면 디렉토리 내용을 나열하는 호출을 저장하고 직접 제거를 호출하여 약간의 오버 헤드를 저장할 수 있습니다. 그래도 여전히 파일 수에 비례합니다.

개인적으로, 나는 프로그램이 죽지 않았다는 것을 확신하기 위해 진보 보고서 중 일부를 좋아합니다. 그래서 나는 파이썬을 통해 물건을 삭제하고 싶습니다. 예를 들어, 모든 파일이 하위 디렉토리없이 하나의 디렉토리에있는 경우 :

import tqdm
import sys
import os

location = sys.argv[1]
directory = os.fsencode(location)

with os.scandir(directory) as it:
    for dir_entry in tqdm.tqdm(it):
        try:
            os.remove(dir_entry.path)
        except OSError:
            pass  # was not a file

12 살짜리 SEAGATE ST3250620NS에서 약 250 개의 파일이 삭제됩니다. 나는 그것이 당신의 드라이브에서 훨씬 빠를 것이라고 가정합니다.

그러나이 시점에서 그것은 단지 미세 최적화입니다. 따라서 하나의 디렉토리에 수백만 개의 파일이 없으면 큰 도움이되지 않습니다. (나처럼, lol, 내가 D를 한 일 🙂


답변

설치 gnutools for windows및 실행 :

find YOURFOLDER -type d -maxdepth 3 | xargs rm -Rf


답변

클라우드에 파일을 백업하지 않고 동시에 삭제하려고하는지 확인하십시오!

많은 클라우드 백업 솔루션을 사용하면 파일이 백업되는 동안 파일이 잠기고 백업 될 때까지 기다려야합니다.

임시 디렉토리 (또는 백업 할 필요가없는)라고하는이 문제가 발생하면 백업 세트에서 임시 디렉토리가 선택되어 있지 않은지 확인하십시오.


답변

여러 계층의 디렉토리가있는 폴더는 Window의 폴더 제거 속도가 실제로 느려지는 경향이 있음을 발견했습니다. node_modules 폴더에 도달하는 데 5 단계가 걸리는 프로젝트를 진행 중이었습니다.

del /f/s/q foldername > nul
rmdir /s/q foldername

이 상황에서 내가하는 일은 node_modules 폴더 또는 가장 깊은 수준의 디렉토리로 이동하여 한 번에 약 12 ​​개 정도의 디렉토리를 선택하고 삭제하기 시작합니다. 여러 번 삭제하면 휴지통이 내가 사용한다고 생각하는 단일 스레드가 아닌 병렬 프로세스에서 작동하도록하여 프로세스 속도를 크게 향상시킵니다.

가장 깊은 디렉토리가 비어 있으면 몇 단계 위로 올라가서 같은 일을합니다. 이로 인해 1 시간 이상 몇 분만에 삭제 된 내용이 삭제되었습니다.

매우 수동적 인 프로세스이며 약간의 성공으로 스크립팅 될 수 있지만 그게 효과가 있습니다.


답변

Hugo의 원래 답변을 사용하여 NPM 프로젝트를 삭제할 때 사용하는 .bat 파일을 만들었습니다. 경로 변수를 추가했으며 경로를 한 번만 복사하여 붙여 넣어야합니다. .bat 파일을 두 번 클릭하면 모든 작업을 수행하므로 모든 것을 입력 할 필요가 없습니다.

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

사용법 예 :

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%


답변

명령 프롬프트를 사용해 보셨습니까?

rmdir /s /q foldername

GUI의 모든 큰 파일 작업은 느리게 진행됩니다. 대부분 시각적 피드백 (진행률 표시 줄)을 여러 번 다시 그려야하기 때문에