Распаковка файла Wordpress.zip на сервере Linux

Используя расширенные глобусы:

shopt -s extglob
printf '%s\n' !([[:digit:][:upper:]]?([[:digit:][:upper:]])_[[:digit:]][[:digit:]][[:digit:]][[:digit:]]_+([[:alnum:]]).dat)

это напечатает все имена файлов / каталогов, которые не (! ) соответствуют [[: digit:] [: upper:]] , за которым следует ноль или один [[: digit:] [: upper:]] , за которым следуют 4 [[: digit:]] между _ s и затем один или несколько [[: alnum:]] перед расширением .dat .
Если вы хотите выполнять рекурсивный поиск:

shopt -s globstar
shopt -s extglob
printf '%s\n' **/!([[:digit:][:upper:]]?([[:digit:][:upper:]])_[[:digit:]][[:digit:]][[:digit:]][[:digit:]]_+([[:alnum:]]).dat)

В качестве альтернативы, с помощью gnu find (можно использовать регулярное выражение):

find . -regextype egrep ! -regex '.*/[[:digit:][:upper:]]{1,2}_[[:digit:]]{4}_[[:alnum:]]+\.dat$'
2
10.03.2015, 18:43
1 ответ

Вы можете использовать два параметра командной строки, чтобы распаковать , чтобы получить желаемый результат, при условии, что zip-архив не содержит подкаталогов .

unzip -j -d /my-test-site wordpress-4.1.1.zip

Обратите внимание, что если бы ваш zip-архив был в следующем порядке:

foo
├── 1
├── 2
├── 3
├── 4
├── 5
├── 6
├── 7
├── 8
├── 9
└── bar
    ├── 1
    ├── 2
    ├── 3
    ├── 4
    ├── 5
    ├── 6
    ├── 7
    ├── 8
    └── 9

Использование этой опции означало бы, что файлы, содержащиеся в foo / bar , уничтожат (заменит содержимое) все файлы, расположенные в foo . То есть, опция -j удаляет все пути, относящиеся к расположениям файлов в zip-архиве, и помещает их либо в текущий каталог (по умолчанию), либо в каталог, указанный в -d опция.

Если в вашем zip-архиве есть подкаталоги, ваш метод будет способом распаковать этот zip-файл.

Вы всегда можете использовать псевдоним команды:

alias wp_unzip='mv wordpress-4.1.1.zip /my-test-site && \
    cd /my-test-site && unzip wordpress-4.1.1.zip && \
    mv wordpress/* . && rmdir wordpress'
2
29.04.2021, 00:31

Теги

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