Извлечение index.php?dir=foo/bar/&file=bar2.jpg к foo/bar/bar2.jpg

оказался HPN-SSH и PIGZ .

TAR -CF - -C [RelativeFolder] [Имя файла] | PIGZ |. SSH PX "PIGZ -D | TAL XF - -C [Удаленный полки]«

Улучшение мощность в десять.

Для справки, установки HPN-SSH и PIGZ на Ubuntu 14.04 легко, как:

# hpn-patched ssh from ppa
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:w-rouesnel/openssh-hpn
sudo apt-get update -y  
sudo apt-get install openssh-server
ssh -V # should have 'hpn' in it somewhere

# pigz
sudo apt-get install pigz

0
01.10.2014, 16:22
3 ответа

Если % 2F является буквальной строкой (не управляющим символом), вы можете попробовать этот небольшой скрипт:

for file in index*.jpg; do

dir1=$(grep -Po '.*dir=\K[[:alnum:]]*' <(echo "$file"))
dir2=$(grep -Po '.*dir=[[:alnum:]]*%2F\K[[:alnum:]]*' <(echo "$file"))
dir3=$(grep -Po '.*dir=[[:alnum:]]*%2F[[:alnum:]]*%2F\K[[:alnum:]]*' <(echo "$file"))
filename=$(grep -Po '.*file=\K.*' <(echo index.php\?dir\=IOP%2FFOO%2FBAR%2F\&file\=ScanImage001.jpg))

echo mkdir -p $dir1/$dir2/$dir3            #remove echos
echo mv $file $dir1/$dir2/$dir3/$filename  #at the beginning of the line

done

Удалите обе команды echo , если вам нравится то, что вы видите на экране .

0
28.01.2020, 04:58
for i in *.jpg 
  do 
  b=$(echo $i | sed 's/.*dir=//' | sed 's/%2F/\//g' | sed 's/&file=//')
  mkdir -p "$(dirname "$b")
  mv "$i" "$b"
done

Строка с вызовами sed хранит полный путь, который должно получить имя файла.
Строка mkdir создает каталог, включающий промежуточные каталоги, и не жалуется, если они уже существуют.

0
28.01.2020, 04:58

предположим, что в одной переменной $url

 short=$(echo $url | sed -e s,%2F,/,g -e s,^index[^=]*=,, -e s,.file=,,)
 mkdir -p $(dirname $short)
 mv $url $short
  • mkdir -p создаст каталог, вместе со всеми путями.
  • $(dirname $short) выдаст вам часть $short (например, IOP/FOO/BAR )
0
28.01.2020, 04:58

Теги

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