我遇到了一个 Unix 命令行的小问题。
我有一个网站文件夹(4gb) ,我需要一个副本,但只是。菲律宾。超文本标记语言。JS 和。Css 文件(只有几百 kb)。
我认为理想情况下,有一种方法可以压缩或沥青整个文件夹,但只抓取某些文件扩展名,同时保留子文件夹结构。这可能吗? 如果可能,怎么做?
我确实尝试过做一个完整的 zip,然后浏览和排除某些文件,但似乎有点过分。
我刚来 Unix。
有任何想法都会很感激。
您可以编写一个 shell 脚本,将基于模式/表达式的文件复制到一个新文件夹中,压缩内容,然后删除该文件夹。现在,至于它的实际语法,我将把它留给你: D。
您可以使用 find和 grep生成文件列表,然后将其导入 zip
find
grep
zip
例如:。
find . | egrep "\.(html|css|js|php)$" | zip -@ test.zip
(-@告诉 zip 从 stdin 读取文件列表)
-@
您可能希望使用 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 "{}" +;
然后你就可以拉上拉链了
切换到网站文件夹,然后运行
zip -R foo '*.php' '*.html' '*.js' '*.css'
你也可以在网站文件夹之外运行:
zip -r foo website_folder -i '*.php' '*.html' '*.js' '*.css'
这是我如何设法做到这一点,但我也喜欢 Ghostdog74的版本。
tar -czvf archive.tgz `find test/ | egrep ".*\.html|.*\.php"`
可以通过将其添加到正则表达式来添加额外的扩展。
我喜欢 Nick 的回答,但是,既然这是一个编程站点,为什么不使用 Ant 来做这件事。 :)
然后您可以放入一个参数,以便可以压缩不同类型的文件。
Http://ant.apache.org/manual/tasks/zip.html