gpt4 book ai didi

unix - 如何删除当前目录中与给定模式不匹配的某些文件?

转载 作者:行者123 更新时间:2023-12-01 14:41:53 25 4
gpt4 key购买 nike

使用rm *.sh 删除以.sh 结尾的文件很容易理解。但是如何删除当前目录中不以 .jar 结尾的所有文件类似于 rm * -except *.jar

最佳答案

试试这个:

find . -mindepth 1 -maxdepth 1 ! -name '*.jar' | sort

如果你真的想删除输出中的所有文件,那么就这样做

find . -mindepth 1 -maxdepth 1 ! -name '*.jar' -delete

您可以阅读 find(1) 手册页以获取有关这个非常强大的工具的更多信息。

编辑:

由于 -delete 标志仅在 GNU find > 4.2.3 中找到(正如 SiegeX 所指出的),这里有几个替代方案,它们也确保我们不会尝试删除目录:

find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 -r rm -f

-r xargs 标志是一个 GNU 扩展,因此它稍微更便携(它适用于 *BSD),但不是那么干净:

find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 rm -f

作为最后但也是最便携的手段:

find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -exec rm '{}' ';'

这有一个缺点,即为每个文件分别调用 rm,这使得速度明显变慢。

关于unix - 如何删除当前目录中与给定模式不匹配的某些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com