지정된 문자열로 시작하는 파일 이름을 가진 모든 파일을 찾으십니까?


148

약 100000 개의 파일이있는 디렉토리가 있으며 지정된 문자열로 시작하는 모든 파일에서 일부 기능을 수행하려고합니다. 수만 개의 파일과 일치 할 수 있습니다.

나는 시도했다

ls mystring*

그러나 이것은 bash 오류 '너무 많은 인수'와 함께 반환됩니다. 다음 계획은

find ./mystring* -type f

그러나 이것은 같은 문제가 있습니다.

코드는 다음과 같아야합니다.

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

대신의 for루프, 당신은 파이프를해야 find으로 while.
추후 공지가있을 때까지 일시 중지되었습니다.

답변:


277

사용하다

find . -name 'mystring*'

10
"find. -name 'mystring *'-exec [명령]"과 같은 일부 기능을 실행하려면 "find. -name 'mystring *'-exec rm {} \;"과 같이 삭제하십시오.
Eldar

2
{}는 파일 이름에 대한 자리 표시 자 :-) (따라서 자신 만의 작업을 구성 할 수 있음)
Sergio Tulentsev

1
이것은 문자열을 포함 하는 모든 결과를 반환하는 것 같습니다 ? The
Brian Z

7
... 또는 find . -iname 'mystring*'대소 문자를 구분하지 않는 검색.
Frank Nocke

OP는 단일 디렉토리를 참조하므로 현재 폴더로 찾기를 제한 -maxdepth 1하기 전에 삽입 하십시오-name
jacanterbury

27
ls | grep "^abc"  

하위 문자열로 시작 하는 모든 파일 (OP가 특별히 필요한 것)을 제공합니다 abc.
현재 디렉토리에서만 작동하지만 find하위 폴더 에서는 재귀 적으로 작동합니다.

문자열로 시작 하는 find파일에만 사용하려면

찾기 . -이름 'abc'*


4

검색을 파일로만 제한하려면 -type f검색 에 사용해야 합니다.

-iname대소 문자를 구분하지 않는 검색 에도 사용하십시오

예:

find /path -iname 'yourstring*' -type f

파이프 부호 또는 xargs없이 결과에 대해 일부 작업을 수행 할 수도 있습니다.

예:

파일을 검색하고 크기를 MB 단위로 표시

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.