Я получил работу, работающую на моем сервере в командной строке в течение двух дней в настоящее время:Более эффективный способ найти и очернить миллионы файлов
find data/ -name filepattern-*2009* -exec tar uf 2009.tar {} ;
Он принимает навсегда, а затем некоторые. Да, в целевом каталоге есть миллионы файлов. (Каждый файл представляет собой ничтожные 8 байт в хорошо хеширован структуре каталогов.) Но просто работает ...
find data/ -name filepattern-*2009* -print > filesOfInterest.txt
... занимает всего два часа или около того. По курсу моя работа бежит, она не будет закончена для пары недель .. Это кажется необоснованным. Есть ли более эффективные меры для этого? Может быть, с более сложным сценарием bash?
Вторичные вопросы: «Почему мой текущий подход настолько медленный?»
ехес параметр порождает новый процесс дегтя для каждого найденного файла. Кроме того, операция обновления tar дорогая. – theomega
сколько у вас файлов и насколько они велики? влияние вызова tar для каждого из файлов имеет большое значение для 10 файлов с петабайтом или 10 миллиардов небольших файлов. – sfussenegger
@sfussenegger: по 8 байт ... обновлен вопрос. Как указано в q, есть * миллионы * файлов. –