使用排除文件删除bash中的文件

时间:2016-04-12 05:29:24

标签: linux bash

我想删除某个目录中的某个文件但是'.gitignore'文件,我尝试这个命令却收到错误

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

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

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

请告诉我这些命令有什么问题 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以逐个文件删除,以避免删除整个目录,从而实现不删除.gitignore

试试这个:

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

答案 1 :(得分:0)

试试这个(对于文件):

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

或者这个(对于目录):

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

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