Bash

在 linux 中,如何刪除除 *.txt 格式之外的所有文件?

  • March 17, 2022

我知道如何刪除txt目前目錄下的所有文件rm *.txt。有誰知道如何刪除目前目錄中的所有文件,除了txt文件?

您可以使用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

如果您只想刪除除 ‘*.txt’ 之外的所有文件,則可以使用以下命令:

$ find . -type f ! -name "*.txt" -exec rm -rf {} \;

但是如果您還想刪除目錄以及文件,那麼您可以使用它:

$ find . ! -name "*.txt" -exec rm -r {} \;

引用自:https://unix.stackexchange.com/questions/78376