Dimitrios Desyllas Asked: 2018-04-07 03:57:47 +0800 CST2018-04-07 03:57:47 +0800 CST 2018-04-07 03:57:47 +0800 CST 删除 .gitignore 中提到的任何文件 772 我在文件中有以下条目,.gitignore我想删除它们。原因是因为这些文件是在 TeX 编译期间创建的临时垃圾文件,我希望能够删除它们。 我怎么能这样做? git rm 3 个回答 Voted meustrus 2019-09-20T16:55:55+08:002019-09-20T16:55:55+08:00 git clean -Xdf 使用大写-X,git clean 仅删除匹配的文件.gitignore。 使用-d,git clean也会删除匹配的整个目录.gitignore。 使用-f,git clean实际上会删除内容而不是警告您。不过要小心。可能还有其他原因(例如个人direnv配置).gitignored,因此请确保始终了解此命令在运行之前将执行的操作。 特别感谢@Kusalananda 的分享git clean。 作为替代方案,如果您有一个包含符号链接目录的依赖项文件夹,并且您不想git clean递归删除这些目录中的所有内容,则可以使用这种更长的形式: git ls-files --others --ignored --exclude-standard --directory | head -c -1 | tr '\n' '\0' | xargs -0 -r rm -r git ls-files使用这些选项列出与 相同的目录git clean -Xdn,但更具机器可读性。 head -c -1修剪尾随换行字节。 tr '\n' '\0'将所有换行符转换为NULs。 xargs -0 -r rm -r删除文件和目录。-0使NUL分隔符。-r导致它跳过空输入(警告:这是一个不可移植的 GNU 扩展)。 Kusalananda 2018-04-07T04:10:08+08:002018-04-07T04:10:08+08:00 git clean -X -f -n git clean -X将删除与.gitignore. 最后-n导致它实际上不删除文件,只是空运行,报告将被删除的文件。 添加-d以删除忽略的目录。 没有-X,它会删除未跟踪的文件(但不是忽略的文件)。 见git clean --help。 Best Answer Dimitrios Desyllas 2018-04-07T03:57:47+08:002018-04-07T03:57:47+08:00 在您的情况下,如果您的文件条目.gitignore不是以开头,!那么这个单行应该适合您: while read -r entry;do rm -rf ${entry}; done < .gitignore
使用大写
-X
,git clean
仅删除匹配的文件.gitignore
。使用
-d
,git clean
也会删除匹配的整个目录.gitignore
。使用
-f
,git clean
实际上会删除内容而不是警告您。不过要小心。可能还有其他原因(例如个人direnv
配置).gitignored
,因此请确保始终了解此命令在运行之前将执行的操作。特别感谢@Kusalananda 的分享
git clean
。作为替代方案,如果您有一个包含符号链接目录的依赖项文件夹,并且您不想
git clean
递归删除这些目录中的所有内容,则可以使用这种更长的形式:git ls-files
使用这些选项列出与 相同的目录git clean -Xdn
,但更具机器可读性。head -c -1
修剪尾随换行字节。tr '\n' '\0'
将所有换行符转换为NUL
s。xargs -0 -r rm -r
删除文件和目录。-0
使NUL
分隔符。-r
导致它跳过空输入(警告:这是一个不可移植的 GNU 扩展)。git clean -X
将删除与.gitignore
. 最后-n
导致它实际上不删除文件,只是空运行,报告将被删除的文件。添加
-d
以删除忽略的目录。没有
-X
,它会删除未跟踪的文件(但不是忽略的文件)。见
git clean --help
。在您的情况下,如果您的文件条目
.gitignore
不是以开头,!
那么这个单行应该适合您: