Ответ 1
использовать
find . -name 'mystring*'
У меня есть каталог с примерно 100000 файлами в нем, и я хочу выполнить некоторую функцию для всех файлов, начинающихся с указанной строки, которая может соответствовать десяткам тысяч файлов.
Я пробовал
ls mystring*
но это возвращается с ошибкой bash "Слишком много аргументов". Мой следующий план состоял в том, чтобы использовать
find ./mystring* -type f
но это имеет ту же проблему.
Код должен выглядеть примерно так:
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done
Спасибо заранее, Rik
использовать
find . -name 'mystring*'
ls | grep "^a"
предоставит вам все файлы, начинающиеся с буквы a, и просто работает с текущим каталогом, тогда как поиск по умолчанию будет разворачиваться в подкаталоги.
Я не говорю об этом лучше - просто под другим углом.
Если вы хотите ограничить свой поиск только файлами, вы должны использовать -type f
в своем поиске
попробуйте также использовать -iname
для поиска без -iname
регистра
Пример:
find /path -iname 'yourstring*' -type f
Вы также можете выполнить некоторые операции с результатами без знака канала или xargs.
Пример:
Искать файлы и показывать их размер в мегабайтах
find /path -iname 'yourstring*' -type f -exec du -sm {} \;