LINUX.ORG.RU
решено ФорумAdmin

7z & имена файлов начинающиеся на минус

 , , минус


0

2

Добрый день!

Можно ли каким-либо образом «заэкранировать» ведущий минус в имени файла, чтобы команда распаковки файла отрабатывала корректно:

7z e "./test.7z" "./-1.txt" 
Т.к. сам упаковщик воспринимает такой аргумент как опцию и отваливается с ошибкой.



Последнее исправление: sptim (всего исправлений: 1)

конкретно про 7z не знаю, но обычно два тире — ставится опцией которая показывает, что дальше нет других опций (парсер-лох превратил два тире в одно длинное)

zolden ★★★★★
()

А экранировать кто будет?

pztrn ★★★★
()
Ответ на: комментарий от kir64

Разумеется не срабатывает. Это я попробовал в первую очередь.

lex@wsdant:/tmp$ 7za e "./test.7z" "./\-1.doc"

7-Zip (A) 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30
p7zip Version 9.04 (locale=ru_RU.utf8,Utf16=on,HugeFiles=on,4 CPUs)

Error:
Cannot use absolute pathnames for this command

sptim
() автор топика
Ответ на: комментарий от minakov

Если использовать имя файла без пути и добавить аргумент --, то да, команда отрабатывает корректно:

$ 7za e -- "./test.7z" "-1.doc"
Сейчас еще попробую с вложениями...

sptim
() автор топика
Ответ на: комментарий от sptim

Да, с вложениями тоже всё корректно. Получается, что именно про ключ '--' и был мой вопрос. Спасибо всем ответившим. :)

Еще бы в соседней ветке кто подсказал в чем трабла с буквой эс...

sptim
() автор топика
Ответ на: комментарий от zolden

Я не ТС, и ничего не спрашивал.

конкретно про 7z не знаю <-- вопрос в скрытом виде

Вот и узнал теперь.

anonymous
()
Ответ на: комментарий от anonymous

Не надо спорить! :) Кстати, mc, если файл начинается на '-' - автоматически добавляет префикс './' к имени файла (%f). И если при архивации, как говорится - архиватор хавает, то при извлечении - не прокатывает. Необходимо фиксить файл /usr/lib/mc/extfs.d/u7z:

mcu7zip_copyout ()
{
        #first we check if we have old p7zip archive with prefix ./ in filename
        # DANT: Фикс имён (удаление ведущих "./" в файлах, из-за этой добавки возможны ошибки)
        EXFNAME=`echo "$2" | sed 's/^\.\///'`
        $P7ZIP l -- "$1" "$EXFNAME" | grep -q "0 files, 0 folders" && EXFNAME='*./'"$EXFNAME"
        $P7ZIP e -so -- "$1" "$EXFNAME" > "$3" 2>/dev/null
}
Возможно для кого-то окажется актуальным.

sptim
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.