Как к unrar и разархивировали файлы рекурсивно?

Для Linux-> часть Windows, следующее является моим фаворитом:

  • python2 -m SimpleHTTPServer
  • python3 -m http.server

Это открывает HTTP-Server on Port 8000 для текущего каталога. Можно получить доступ к нему из Windows путем ввода Адреса IP в браузере - например. http://192.0.2.91:8000/

Если Вы хотите совместно использовать каталог, необходимо архивировать его.

2
22.06.2012, 14:35
4 ответа

Единственным путем я могу думать о выполнении, это должно циклично выполниться многократно с находкой и выполнить сценарий, который удаляет файлы после того, как они были правильно распакованы. Это должно будет пробежаться через подкаталоги многократно, таким образом, это не точно эффективно. (ожидаемые имена файлов полужирным на вершине)

recursive_unpack

#!/bin/bash
if [ -d "$1" ]; then
   STARTDIR="$1"
else
   echo "starting dir not found: $1"
   exit
fi


COUNTER=1
while [ $COUNTER -gt 0 ]; do
   COUNTER=`find "$STARTDIR" -type f \( -iname '*.zip' -o -iname '*.rar' \) -exec ./unpacker \{\} \; | wc -l`
done

неупаковщик

#!/bin/bash
BASENAME=`basename "$1"`
BASEDIR=`dirname "$1"`

cd "$BASEDIR"
EXT=`echo "$BASENAME" | awk -F . '{print $NF}'`

if [ "$EXT" = "zip" ]; then
  unzip -qq "$BASENAME"
  if [ $? -eq 0 ]; then
     echo "zip unpacked: $1"
     rm "$BASENAME"
  fi
fi

if [ "$EXT" = "rar" ]; then
  unrar e -y -c- -inul "$BASENAME"
  if [ $? -eq 0 ]; then
     echo "rar unpacked: $1"
     rm "$BASENAME"
  fi
fi

сделать

chmod u+x recursive_unpack
chmod u+x unpacker

назовите его с ./recursive_unpack "/my/directory/containing/my/files"

  • recursive_unpack ожидает неупаковщика в том же каталоге
  • unrar и unzip потребность, которая будет установлена
  • если это не может найти каталог, это выйдет с ошибкой
  • не удаляйте сообщения эха в неупаковщике, они используются для проверки на присутствие файлов для распаковки для завершения цикла
1
27.01.2020, 22:06

Вот someones решение этого со сценарием оболочки.

http://www.dbforums.com/unix-shell-scripts/1619154-how-unzip-files-recursively.html

Казалось бы, что Linux не имеет рекурсивного, разархивировали опцию :(

1
27.01.2020, 22:06
  • 1
    Неуместно просто связать Ваш источник, необходимо также предоставить ответ –  xenoterracide 11.10.2013, 00:53

Быстрая острота, не проверяет, был ли архив уже извлечен:

$ find . -name '*.rar' -execdir unrar e '{}' + && find . -name '*.zip' -execdir unzip -tq '{}' +
1
27.01.2020, 22:06
  • 1
    Интересно, почему unrar требует execdir после чтения страницы справочника, я думаю, что прекращу использовать должностное лицо. примечание –  xenoterracide 11.10.2013, 00:52
  • 2
    , отредактированное для добавления, разархивировало, это не протестировало –  xenoterracide 11.10.2013, 00:56

Возможно, dtrx (http://brettcsmith.org/2007/dtrx/) сделает, хотя я не уверен, обрабатывает ли он тип rar.

0
27.01.2020, 22:06

Теги

Похожие вопросы