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

149

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

я пытался

ls mystring*

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

find ./mystring* -type f

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

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

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done
RikSaunderson
источник
Вместо forпетли, вы должны трубу findв while.
Приостановлено до дальнейшего уведомления.

Ответы:

277

использование

find . -name 'mystring*'
Серхио Туленцев
источник
10
и выполнить некоторую функцию "find. -name 'mystring *' -exec [команда]", например, удалить "find. -name 'mystring *' -exec rm {} \;"
Эльдар
2
Где {} является заполнителем для имени файла :-) (чтобы вы могли создавать свои собственные действия)
Серхио Туленцев,
1
Кажется, это возвращает все результаты, содержащие строку?
Brian Z
7
... или find . -iname 'mystring*'для поиска без учета регистра.
Фрэнк
OP относится к одному каталогу, поэтому вставьте -maxdepth 1перед тем, -nameчтобы ограничить поиск текущей папкой
jacanterbury
27
ls | grep "^abc"  

даст вам все файлы, начинающиеся (что конкретно требуется для OP) с подстроки abc.
Он работает только с текущим каталогом, а findрекурсивно работает с подпапками.

Чтобы использовать findтолько для файлов, начинающихся с вашей строки, попробуйте

найти . -имя 'abc' *

jacanterbury
источник
4

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

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

Пример:

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

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

Пример:

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
Мэтсон Кепсон
источник