Not: Bu bir kopya değildir. Grep'in yolları / dizinleri dışlama seçeneklerinin beklenen şekilde davranmadığı belli bir durumla ilgileniyorum.
Kök dosya sistemimi yinelemeli olarak aramak için grep kullanmaya çalışıyorum. Gibi bazı dizinleri dışlamaya çalışıyorum /proc
, /sys
, ve /usr/local
. Kullanırsam --exclude-dir=${DIR_NAME}
, sonra aşağıdaki yollarda arama yapmayacak ${DIR_NAME}
, ama bu olacak Ayrıca aşağıdaki yolları aramayı reddedeceği anlamına gelir ${DIR_NAME}
Eğer ${DIR_NAME}
geçerli çalışma dizininin altındaki bir seviyede. Örnek olarak, bu dosya sistemi ağacını göz önünde bulundurun:
${PWD}/
data/
settings/
sys/
users/
developer/
projects/
my_os/
build/
src/
apps/
sys/
Makefile
extras/
sys/
apps/
os/
Aramamın hariç tutulmasını istiyorsanız ${PWD}/sys
ve altındaki her şey, grep -rl --exclude-dir=sys
dışlayacak, ancak dışlayacak ${PWD}/data/settings/sys
ve ${PWD}/users/developer/projects/my_os/src/sys
, aramamda istediğim iki dizin var.
Aslında bunu umuyordum --exclude-dir
/ --exclude
düzenli ifadeler için izin olurdu ve bu yorum yaptıklarını belirten, ancak düzenli ifade sözdiziminin yardımcı programın davranışını etkilemediği anlaşılıyor (ör. "^/(dev|proc)"
). Bu iki seçenek normal ifadeler kullanmıyorsa iyiyim ancak dışlama deseninin tekil yol bileşenlerine uygulanmasını istemiyorum. Bu şekilde çalışmasını sağlamak için zaten var mı?