Shell
如何指定排除某些文件的 shell 模式?
例如,我想刪除目錄中的所有文件,但
.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 {} +