Подтвердить что ты не робот

Найти все файлы с именем файла, начинающимся с указанной строки?

У меня есть каталог с примерно 100000 файлами в нем, и я хочу выполнить некоторую функцию для всех файлов, начинающихся с указанной строки, которая может соответствовать десяткам тысяч файлов.

Я пробовал

ls mystring*

но это возвращается с ошибкой bash "Слишком много аргументов". Мой следующий план состоял в том, чтобы использовать

find ./mystring* -type f

но это имеет ту же проблему.

Код должен выглядеть примерно так:

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

Спасибо заранее, Rik

4b9b3361

Ответ 1

использовать

find . -name 'mystring*'

Ответ 2

ls | grep "^a"  

предоставит вам все файлы, начинающиеся с буквы a, и просто работает с текущим каталогом, тогда как поиск по умолчанию будет разворачиваться в подкаталоги.

Я не говорю об этом лучше - просто под другим углом.

Ответ 3

Если вы хотите ограничить свой поиск только файлами, вы должны использовать -type f в своем поиске

попробуйте также использовать -iname для поиска без -iname регистра

Пример:

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

Вы также можете выполнить некоторые операции с результатами без знака канала или xargs.

Пример:

Искать файлы и показывать их размер в мегабайтах

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