
파일이 있습니다파일이름_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 까지의 파일이 삭제됩니다.
추가 정보:대지