Подтвердить что ты не робот

Как я могу закрепить все дерево папок в unix, но только определенные файлы?

Я застрял в небольшой проблеме командной строки unix.

У меня есть папка сайта (4gb) Мне нужно захватить копию, но только файлы .php,.html,.js и .css(что составляет всего пару сотен килобайт).

Я думаю, что в идеале есть способ сделать zip или tar целой папкой, но только захватить определенные расширения файлов, сохраняя при этом структуры подпапок. Возможно ли это, и если да, то как?

Я попытался сделать весь почтовый индекс, а затем пропустил и исключил определенные файлы, но это показалось немного чрезмерным.

Я новичок в unix.

Будем очень благодарны за любые идеи.

4b9b3361

Ответ 1

Перейдите в папку веб-сайта, затем запустите

zip -R foo '*.php' '*.html' '*.js' '*.css' 

Вы также можете запустить это из-за пределов папки веб-сайта:

zip -r foo website_folder -i '*.php' '*.html' '*.js' '*.css'

Ответ 2

Вы можете использовать find и grep для создания списка файлов, а затем передать это в zip

например.

find . | egrep "\.(html|css|js|php)$" | zip [email protected] test.zip

([email protected] указывает zip читать список файлов из stdin)

Ответ 3

Вот как мне это удалось, но мне также нравится версия ghostdog74.

tar -czvf archive.tgz `find  test/ | egrep ".*\.html|.*\.php"`

Вы можете добавить дополнительные расширения, добавив их в регулярное выражение.

Ответ 4

Мне понравился ответ Ник, но, поскольку это сайт программирования, почему бы не использовать Ant для этого.:)

Затем вы можете ввести параметр, чтобы можно было зашифровать различные типы файлов.

http://ant.apache.org/manual/Tasks/zip.html

Ответ 5

вы можете использовать find (GNU), чтобы найти все ваши файлы php, html и т.д. Затем выполните их настройку

find /path -type f \( -iname "*.php" -o -iname "*.css" -o -iname "*.js" -o -iname "*.ext" \) -exec tar -r --file=test.tar "{}" +;

после этого вы можете закрепить его

Ответ 6

Вы можете написать оболочку script для копирования файлов на основе шаблона/выражения в новую папку, zip-содержимое и удаление папки. Теперь, что касается фактического синтаксиса, то оставьте это вам: D.