У меня есть каталог с примерно 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
.Ответы:
использование
источник
find . -iname 'mystring*'
для поиска без учета регистра.-maxdepth 1
перед тем,-name
чтобы ограничить поиск текущей папкойдаст вам все файлы, начинающиеся (что конкретно требуется для OP) с подстроки
abc
.Он работает только с текущим каталогом, а
find
рекурсивно работает с подпапками.Чтобы использовать
find
только для файлов, начинающихся с вашей строки, попробуйтеисточник
Если вы хотите ограничить свой поиск только файлами, которые вы должны использовать
-type f
в своем поискепопробуйте использовать также
-iname
для поиска без учета регистраПример:
Вы также можете выполнить некоторые операции с результатами без знака канала или xargs.
Пример:
Искать файлы и показывать их размер в мегабайтах
источник