ls コマンド、ファイル globbing、および 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でこれを行う方法はありますか?
答え1
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