Shell

如何指定排除某些文件的 shell 模式?

  • July 16, 2009

例如,我想刪除目錄中的所有文件,但.tar它們來自的文件除外。我可以做類似的事情:

find . -maxdepth 0 | grep -v '.tar$' | xargs rm -f

但是有沒有辦法只使用 rm 和shell 模式匹配bash如果無法使用 vanilla 完成,請隨意使用或其他常用 shell 或擴展選項指定它sh

我發現了一個類似的問題,關於使用 find 避免目錄和子目錄,但不是使用 shell 模式。

您可以使用擴展的萬用字元來做到這一點。

shopt -s extglob

然後

rm !(file.tar)

這至少適用於 bash 3.2.39

我認為您想要實現的目標是不可能的。

但是,您可以簡化您擁有的命令:

find . -maxdepth 0 -not -name '*.tar' -exec rm -f {} +

引用自:https://serverfault.com/questions/41783