mac 上的 bash,由 brew 安裝
λ brew list | grep bash
bash
λ which bash
/usr/local/bin/bash
λ rm !("shorturl.api")
-bash: !: event not found
λ ls -1 | grep -v shorturl.api | xargs rm
rm: cannot remove ''$'\033''[0m'$'\033''[01;32mapi'$'\033''[0m': No such file or directory
rm: cannot remove ''$'\033''[01;34metc'$'\033''[0m': No such file or directory
rm: cannot remove ''$'\033''[01;34minternal'$'\033''[0m': No such file or directory
rm: cannot remove ''$'\033''[00mshorturl.go'$'\033''[0m': No such file or directory
uj5u.com熱心網友回復:
!(pattern-list)通配模式僅在啟用擴展通配時有效。請參閱glob - Greg 的 Wiki中的extglob部分。在這種情況下,您需要:
shopt -s extglob
rm -- !(shorturl.api)
--withrm是為了防止名稱以開頭的檔案被-視為選項。
一種無需擴展 globbing 的方法是:
find . -maxdepth 1 -type f ! -name shorturl.api -delete
該ls -1 | grep -v shorturl.api | xargs rm問題的嘗試以多種方式被打破,包括:
- 的輸出
ls旨在供人類閱讀。不適合自動加工。請參閱為什么不應該決議 ls(1) 的輸出。 - 這
grep -v shorturl.api將排除預期檔案以外的檔案。例如,old-shorturl.api將被排除在外。 xargs默認情況下使用空格和換行符將其輸入拆分為引數。xargs rm不會洗掉名稱中包含此類字符的檔案。
uj5u.com熱心網友回復:
謝謝@GordonDavisson。
在管道到 xargs 之前使用 ls --color
ls -1 --color=never | grep -v shorturl.api | xargs rm -rf
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/447745.html
標籤:重击
