2

Я пытаюсь извлечь много RAR-файлов одновременно, но безуспешно. Я пытаюсь в порядке:

>ls *.rar|xargs unrar x
>ls *.rar|xargs unrar e
>unrar e -r *.rar
>for f in *.rar;do unrar e “$f”;done

никто не работает. Rar отвечает каждый раз, говоря, что нет файла для извлечения.

>Extracting from damned_file.rar

 No files to extract

Если я пытаюсь извлечь файл по одному, то все работает нормально

>unrar e damned_file.rar
 extracting damned_file.rar                        
 extracting dmaned_file.txt                            OK
 All OK
>

Моя версия RAR

UNRAR 4.10 freeware      Copyright (c) 1993-2012 Alexander Roshal

Что я делаю не так?

PS: команда

find . -name "*.rar" -exec unrar e {} \;

работает нормально, но вопрос остается прежним. Почему предыдущие команды не работают?

2 ответа2

2

Вот мой goto для цикла:

for file in *.rar; do unrar e $file; done
1

xargs помещает аргументы за предоставленную ему команду вплоть до максимальной длины команды для вашей текущей оболочки, поэтому команда будет такой:

xargs unrar e damned_file.rar another_damned_file.rar yadf.rar

Однако unrar принимает в качестве аргумента только один файл rar. Указанная вами команда поиска запускает unrar для каждого найденного файла, поэтому команда unrar e damned_file.rar , unrar unrar e another_damned_file.rar .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .