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


149

У меня есть каталог с примерно 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 {} \;"
Эльдар

2
Где {} является заполнителем для имени файла :-) (чтобы вы могли создавать свои собственные действия)
Серхио Туленцев,

1
Кажется, это возвращает все результаты, содержащие строку?
Brian Z

7
... или find . -iname 'mystring*'для поиска без учета регистра.
Фрэнк

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.

Пример:

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.