명령줄에서 특정 파일 삭제

명령줄에서 특정 파일 삭제

파일이 있습니다파일이름_1,파일이름_2...fileName_100000여기서 파일 이름은 순차적으로 번호가 매겨집니다. 다음보다 큰 인덱스 파일을 삭제하려면 어떻게 해야 합니까?100?

답변1

파일 이름에 순차적으로 번호가 매겨진 경우 다음 명령을 실행하십시오.

rm fileName_{100..100000}

답변2

이 명령을 시도해 볼 수도 있습니다.

for i in $(seq 100 100000); do rm fileName_$i; done

파일 이름에 숫자가 순차적으로 포함되어 있으면 모든 파일(100~100000 범위)이 삭제됩니다.

답변3

일반적으로 이를 달성하는 방법에는 여러 가지가 있습니다.

rm fileName_{100..100000}

쉘에 의해 대략 100,000개의 파일 이름으로 확장됩니다. 기본 이름이 긴 경로이고 숫자가 충분히 높은 경우 이 접근 방식을 사용하면 실제로 명령줄의 최대 길이를 초과할 수 있습니다.

루프for

for i in $(seq 100 100000); do rm fileName_$i; done

는 이 문제를 겪지 않지만 쉘이 변수 대체를 수행하고 rm을 약 100,000번 실행해야 하기 때문에 파일을 삭제하는 상대적으로 느린 방법입니다.

위의 두 가지 방법 모두 일부 파일이 filename_101누락된 경우 경고가 발생할 수 있습니다.

일반적으로 기반 솔루션은 find실제로 존재하는 파일(검색 중)에만 작동하므로 더 좋습니다. 그러나 몇 가지 미묘한 차이점이 있습니다.

find . -name 'fileName_[100-100000]' -exec rm {} \;

여전히 rm프로그램을 약 100,000번 실행하고 최종 프로그램을 \;다음 으로 대체하여 +하위 프로세스 수를 최소화하려고 합니다. 두 방법 모두 -delete외부 명령을 전혀 사용하지 않고 대신 시스템 호출을 호출하는 방법보다 (훨씬 또는 약간) 느릴 것입니다 .

하지만,언제나패턴이 실제로 대상으로 삼으려는 파일과 일치하는지 먼저 확인하십시오.

stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]' 
askubuntu/filename_1

따라서 이 경우에는 보관하고 싶은 파일을 삭제하고 제거해야 할 파일은 남겨두시면 됩니다.

답변4

다음 명령을 사용하십시오.

find . -name 'fileName_[100-100000]' -exec rm {} \;

그러면 100 에서 100000 까지의 파일이 삭제됩니다.

추가 정보:대지

관련 정보