iva*_*ras 2 unix shell terminal command-line
使用rm *.sh以删除.SH结尾的文件是很容易理解的.但是我如何删除当前目录中没有以.jar
类似结尾的所有文件rm * -except *.jar
试试这个:
find . -mindepth 1 -maxdepth 1 ! -name '*.jar' | sort
Run Code Online (Sandbox Code Playgroud)
如果你真的想要删除其输出中的所有文件,那么就这样做
find . -mindepth 1 -maxdepth 1 ! -name '*.jar' -delete
Run Code Online (Sandbox Code Playgroud)
您可以阅读find(1)手册页,了解有关这个功能强大的工具的更多信息.
编辑:
由于-delete标志只能在GNU find> 4.2.3中找到(正如SiegeX所指出的),这里有几个替代方案,它们也确保我们不会尝试删除目录:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 -r rm -f
Run Code Online (Sandbox Code Playgroud)
-r xargs标志是一个GNU扩展,所以这稍微更便携(它适用于*BSD),但不是很干净:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -print0 | xargs -0 rm -f
Run Code Online (Sandbox Code Playgroud)
作为最后 - 但最便携 - 度假胜地:
find . -mindepth 1 -maxdepth 1 ! -type d ! -name '*.jar' -exec rm '{}' ';'
Run Code Online (Sandbox Code Playgroud)
这具有为每个文件单独调用rm的缺点,这使得它明显变慢.