2016-04-12 85 views
0

我想删除一个目录中的一些文件,但“的.gitignore”的文件,我试试这个命令,但得到一个错误删除文件排除文件

[[email protected] lw2]$ find ./web/assets/* ! -name '.gitignore' | xargs rm -rf 
find: `./web/assets/*': No such file or directory 

我再试一次“”字符,但我得到另一个错误:

[[email protected] lw2]$ find ./web/assets/. ! -name '.gitignore' | xargs rm -rf 
rm: cannot remove directory: `./web/assets/.' 

请告诉我有什么不对这些命令 谢谢!

+0

错误信息如何不清楚? 'find'返回当前目录的名字,但不能被删除。用'rm -rf'你可以删除任何包含'.gitignore'文件的目录。 – tripleee

回答

0

您可以通过文件,以避免删除整个目录中删除文件,因此实现不删除.gitignore

试试这个:

find ./web/assets/* -type f ! -name '.gitignore' -exec rm {} \; 
+0

这留下了一堆空目录。 – tripleee

+0

如果您看到问题所在,则可以看到他要求在目录中删除文件,并且不要删除目录。 –

+1

我不完全确定。为什么他们会使用'rm -rf'?无论如何,在这种情况下,在'-type d'中传递的简单明显的解决方法很容易避免错误消息以及其他许多错误消息。 – tripleee

0

试试这个(的文件):

[[email protected] lw2]$ find /full/path/to/directory/ -type f ! -iname ".gitignore" -exec rm -fv {} \; 

或这个(对于目录):

[[email protected] lw2]$ find /full/path/to/directory/ -type d ! -iname ".gitignore" -exec rm -fv {} \; 

注意:最好先使用临时目录测试命令,然后运行主命令。