Grep

是否可以忽略 ls 或文件萬用字元中的特定文件或目錄?

  • April 10, 2020

我在使用 ls 命令、文件萬用字元和 grep 命令時遇到問題。考慮以下文件/目錄樹。

abc/
   def
   ghi.txt
   jkl

def/
   f01
   abc
   abc.txt

ghi.txt

假設如果我想完全忽略 abc/ 目錄並報告其他所有內容。嘗試ls -lR -Iabc .確實會報告 /def/abc.txt 文件,但會忽略該/def/abc文件。同樣ls -lR . | grep -v abc在這裡也沒有好處。有什麼方法可以在 bash 中做我想做的事嗎?

或者,假設我想忽略ghi.txt但報告abc/ghi.txt. 有沒有辦法在bash中做到這一點?

在 bash 中,如果啟用了擴展萬用字元,那麼您可以使用 !(abc) 來反向匹配abc目錄。前任。給定

$ tree
.
├── abc
│   ├── def
│   ├── ghi.txt
│   └── jkl
├── def
│   ├── abc
│   ├── abc.txt
│   └── f01
└── ghi.txt

2 directories, 7 files

$ shopt extglob
extglob         on

然後

$ ls !(abc)
ghi.txt

def:
abc  abc.txt  f01

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