#linux #command-line-interface
#linux #интерфейс командной строки
Вопрос:
В настоящее время я использую это
unrar e -r *.rar
Чтобы извлечь файлы, однако это помещает все в мою корневую папку unraring. Текущая структура
/HomeFolder
/Nextlevel
/RarFolder
rarfile.rar
Я хочу, чтобы результат был
/HomeFolder
/Nextlevel
raroutput.ext
Как бы мне изменить свою команду, чтобы сделать это?
Ответ №1:
Попробуйте использовать следующий подход:
find /HomeFolder -type d -name 'RarFolder' -printf '%hn' | xargs -I{} sh -c 'cd {}; unrar e -r *.rar'
Он выполняет поиск по всем вложенным подкаталогам ‘RarFolder’ в ‘/HomeFolder’, выполняя вашу команду unrar из вложенного каталога, содержащего ‘RarFolder’ (т. Е. ‘/HomeFolder / Nextlevel’ в вашем примере).
Для извлечения файлов в родительский каталог одного из них, содержащий файлы ‘*.rar’, команда может быть настроена следующим образом:
find /HomeFolder -type f -name '*.rar' -printf '%hn' | xargs -I{} sh -c 'cd {}/..; unrar e -r *.rar'
Комментарии:
1. Rarfolder — это просто пример, NextLevel и Rarfolder имеют неизвестные имена. Мне просто нужно, чтобы все rar-файлы были извлечены на 1 каталог выше, где находится файл rar
2. @BrianJ Я скорректировал свой ответ для этого случая