명령 행에서 특정 파일 삭제 있는데 여기서 fileNames는

fileName_1 , fileName_2fileName_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 사이의 파일이 삭제됩니다.

추가 정보 : 사이트