2011-11-04 93 views
0

我需要在我的网络服务器上更新项目。不幸的是,其他人已经改变了服务器上的一些文件,我不想覆盖它们。我可以安全地覆盖所有以“Builder”开头的文件(比如“BuilderUser.php”或“BuilderTemplate.php”)。删除不以“Builder”开头的文件

我的想法是复制我的本地目录并删除所有不以“Builder”开头的文件,然后上传生成的文件夹。我正在使用OS X.有什么方法可以删除所有没有前缀“Builder”的文件吗?

回答

1

打开终端,导航到你的项目的根目录,然后键入

find . -type f | grep -v '/Builder[^/]*' | xargs rm 

find将在.或子目录打印任何的-type f意味着常规文件(而不是块设备,符号链接,目录,等等。)。 grep将打印任何一行(因为-v不是匹配模式。对于该模式,/表示一个目录,'Builder'必须是在目录之后出现的第一个东西(因此在文件名中),[^/]意味着除/(目录分隔符)之外的任何字符,而*意味着任何数量的最后一个项目(非斜线)。然后xargs从管道获取文件并将它们作为参数传递给rm

请注意,这只适用于名称中没有空格的文件。如果您需要一个处理空格的文章,请在手册页中发布或查找零分隔选项。

+0

谢谢凯文! – Lukas