Титла: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: uphero в Nov 11, 2015, 23:18 Здравейте,
имам една чуденка дали под линукс няма да е възможно да отворя няколко архива (~20К) и от всеки да изтрия файл, който във всеки архив е със едно и също име? Всякакви насоки и идеи са добре дошли, ако трябва специално заради това ще инсталирам дистрибуции, пакети и каквото е нужно. Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: pennywise в Nov 11, 2015, 23:29 Ако е zip, може да пробваш с:
Код: zip -d archive.zip "picture.jpg" Това може да го вкараш в скрипт който да мине през всеки архив, директорията и/или субдиректориите. Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: neter в Nov 12, 2015, 03:41 Ако питаш за компресирани tarball-ове (tar.gz, tar.bz2...), не се поддържа изтриване на файл без предварително разкомпресиране. Например, ако имаш tar.gz архив, то първо изпълняваш команда:
Код: gunzip архив.tar.gz След това изтриваш файла с команда: Код: tar --delete -f архив.tar път/до/файла/име_на_файла И накрая отново компресираш tarball-а с команда: Код: gzip архив.tar Въпреки че са повечко стъпки, отново не пречи да го скриптираш. В твоя случай само трябва да попълниш имената на файловете в масив, след което да завъртиш нужните команди за твоя тип архив в цикъл, който да обходи всички елементи на масива. Пример: Код
Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: uphero в Nov 12, 2015, 09:29 Да, пропуснал съм явно най-важноте.
ZIP И RAR са архивите, и сега ги прегледах и не във всеки архив е със едно и също име файла, но започва по един и същ начин. И тоя код кой програмен език е да не ви досаждам с елементарни питания? Ако може да ми дадете комнада за това, аз вече по примера ще си направя скрипта. Също и това колко ще товари? В смисъл как да структурирам всичко без проблем да може да обработи всички архиви - над 20 000 са. Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: Acho в Nov 12, 2015, 10:00 Това са bash команди. Изпълняваш си ги директно в конзолата.
Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: neter в Nov 13, 2015, 10:58 Да, езикът в по-големия пример е bash, а в командите се използват инструменти за разархивиране. А като имената на файловете започват по един и същи начин, в папки с еднакви имена ли се намират в архивите, или и те се различават някак, и има ли на същите места файлове, имената на които започват по същия начин, но не трябва да се трият?
Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: korea60 в Nov 13, 2015, 18:50 Със сигурност има по-добри решения и с доста повече проверки, но може да погледнеш това (работи с зип архиви).
#!/bin/bash if [ $# -lt 1 ];then echo "Expected directory" fi for i in $(find $1 -type f -name "*.zip");do unzip -l $i | egrep "file1.*" >> /dev/null if [ $? -eq 0 ];then echo "$i" >> "LogFile.txt" fi done while read line;do zip -d $line "file1.*" done<"LogFile.txt" Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: uphero в Nov 13, 2015, 20:49 Да, езикът в по-големия пример е bash, а в командите се използват инструменти за разархивиране. А като имената на файловете започват по един и същи начин, в папки с еднакви имена ли се намират в архивите, или и те се различават някак, и има ли на същите места файлове, имената на които започват по същия начин, но не трябва да се трият?Не, няма папки. В архива има 2 файла - единия започва с Readme... другия със различно име. Този който започва с Readme... трябва да се изтрие. Титла: Re: Работа с голям брой архиви - отваряне и триене на файл. Публикувано от: neter в Nov 16, 2015, 00:49 Код
Преди това си инсталирай пакетите zip и rar, ако текущо не са ти инсталирани. |