Fir*_*gun 112 shell bash wildcards
我知道如何删除txt当前目录下的所有文件rm *.txt。有谁知道如何删除当前目录中的所有文件,除了txt文件?
Kev*_*vin 159
您可以使用find:
find . -type f ! -name '*.txt' -delete
Run Code Online (Sandbox Code Playgroud)
或者 bash 的扩展通配功能:
shopt -s extglob
rm *.!(txt)
Run Code Online (Sandbox Code Playgroud)
或者在 zsh 中:
setopt extendedglob
rm *~*.txt(.)
# || ^^^ Only plain files
# ||^^^^^ files ending in ".txt"
# | \Except
# \Everything
Run Code Online (Sandbox Code Playgroud)
小智 21
如果您只想删除除“*.txt”之外的所有文件,则可以使用以下命令:
$ find . -type f ! -name "*.txt" -exec rm -rf {} \;
但如果你还想删除目录和文件,那么你可以使用这个:
$ find . ! -name "*.txt" -exec rm -r {} \;
Ken*_*ent 13
有很多方法可以做到。但最简单的方法是(bash):
shopt -s extglob
rm !(*.txt)
Run Code Online (Sandbox Code Playgroud)
一种没有的解决方案find:
mv dir/*.txt otherdir/
rm -r dir
mv otherdir dir
Run Code Online (Sandbox Code Playgroud)
这应该适用于所有类型的外壳。
| 归档时间: |
|
| 查看次数: |
154377 次 |
| 最近记录: |