fileName_1 , fileName_2 … fileName_100000 파일이 있는데 여기서 fileNames는 순차적으로 번호가 매겨집니다. 100 보다 큰 색인 파일을 어떻게 삭제 합니까?
답변
파일 이름이 순차적으로 번호가 매겨지면 다음 명령을 실행하십시오.
rm fileName_{100..100000}
답변
이 명령을 시도해도됩니다
for i in $(seq 100 100000); do rm fileName_$i; done
파일 이름에 순차적으로 번호가 포함되어 있으면 모든 파일 (100 ~ 100000 범위)이 삭제됩니다.
답변
일반적으로 몇 가지 방법으로이를 달성 할 수 있습니다.
rm fileName_{100..100000}
셸에서 대략 100,000 개의 파일 이름으로 확장됩니다. 기본 이름이 긴 경로이고 숫자가 충분히 높은 경우 실제로이 방법으로 명령 행의 최대 길이를 초과 할 수 있습니다.
for
루프
for i in $(seq 100 100000); do rm fileName_$i; done
쉘이 변수 대체를 수행하고 rm을 약 10 만 번 실행해야하기 때문에이 문제점이 발생하지 않지만 파일을 삭제하는 비교적 느린 방법입니다.
예를 들어, 파일 중 일부 filename_101
가 누락 된 경우 위의 두 가지 방법으로 경고가 발생할 수 있습니다 .
일반적으로 기반 솔루션 find
은 실제로 발견 중에 파일에 대해서만 작동하므로 더 좋습니다. 그러나 약간의 차이점이 있습니다.
find . -name 'fileName_[100-100000]' -exec rm {} \;
여전히 실행됩니다 rm
최종 교체하는 동안, 10 만 시간에 대해 프로그램 \;
에 의한 것은 +
서브 프로세스의 수를 최소화하려고합니다. 두 가지 방법 모두 -delete
외부 명령을 전혀 사용하지 않고 대신 시스템 호출을 호출하는 사용 보다 느릴 것 입니다.
그러나 패턴이 실제로 대상 파일과 일치하는지 항상 먼저 확인하십시오.
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
따라서이 경우 보관하려는 파일을 삭제하고 제거해야 할 파일을 남겼습니다.
답변
다음 명령을 사용하십시오.
find . -name 'fileName_[100-100000]' -exec rm {} \;
100에서 100000 사이의 파일이 삭제됩니다.
추가 정보 : 사이트