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

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

나는 시도했다

ls mystring*

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

find ./mystring* -type f

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

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

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



답변

사용하다

find . -name 'mystring*'


답변

ls | grep "^abc"  

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

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

찾기 . -이름 ‘abc’*


답변

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

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

예:

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

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

예:

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;


답변