我知道如何删除txt
当前目录下的所有文件rm *.txt
。有谁知道如何删除当前目录中除文件之外的所有文件txt
?
答案1
您可以使用find
:
find . -type f ! -name '*.txt' -delete
或者 bash 的扩展通配符功能:
shopt -s extglob
rm *.!(txt)
或者在 zsh 中:
setopt extendedglob
rm *~*.txt(.)
# || ^^^ Only plain files
# ||^^^^^ files ending in ".txt"
# | \Except
# \Everything
答案2
如果你只想删除全部文件除了 '*.txt' 之外,您可以使用以下命令:
$ find . -type f ! -name "*.txt" -exec rm -rf {} \;
但如果你也想删除目录连同文件然后你可以使用这个:
$ find . ! -name "*.txt" -exec rm -r {} \;
答案3
有很多方法可以做到这一点。但最简单的方法是(bash):
shopt -s extglob
rm !(*.txt)
答案4
一种解决方案没有find
:
mv dir/*.txt otherdir/
rm -r dir
mv otherdir dir
这应该适用于所有类型的 shell。