我需要在我的网络服务器上更新项目。不幸的是,其他人已经改变了服务器上的一些文件,我不想覆盖这些文件。我可以安全地覆盖所有以“Builder”开头的文件(如“BuilderUser.php”或“BuilderTemplate.php”)。
我的想法是复制我的本地目录并删除所有不以“Builder”开头的文件,然后上传生成的文件夹。我正在使用OS X.有没有办法删除所有没有以“Builder”为前缀的文件?
答案 0 :(得分:1)
打开终端,导航到项目的根目录,然后键入
find . -type f | grep -v '/Builder[^/]*' | xargs rm
find
将在.
或子目录中打印任何内容,-type f
表示常规文件(与块设备,符号链接,目录等相对)。 grep
将打印任何(因为-v
) 与该模式不匹配的行。对于模式,/
表示目录,'Builder'必须是目录后出现的第一个内容(因此在文件名中),[^/]
表示除/
之外的任何字符(目录)分隔符),*
表示最后一项(非斜杠)的任意数量。然后xargs
从管道中获取文件并将它们作为参数传递给rm
。
请注意,这仅适用于名称中没有空格的文件。如果您需要一个处理空格的方法,请在手册页中发布或查找零分隔选项。