Կատարեք Grep ռեկուրսիվ որոնում բոլոր ֆայլերում և գրացուցակներում
Բազմակողմանի grep հրամանը թույլ է տալիս կատարել տեքստի որոնում բոլոր ֆայլերում և գրացուցակի բոլոր ենթացանցերում: Ահա թե ինչպես դա անել:
Grep-ը հիանալի գործիք է, երբ պետք է որոնել ֆայլի բովանդակությունը:
Սովորաբար, դուք գործարկում եք grep-ը մեկ ֆայլի վրա, ինչպիսին է սա.
grep search_term filename
Grep-ը բավականին բազմակողմանի է: Եթե ցանկանում եք որոնել գրացուցակի բոլոր ֆայլերը grep-ով, օգտագործեք այն այսպես.
grep search_term *
Դրա հետ կապված խնդիր կա։ Այն որոնում է միայն ընթացիկ գրացուցակի բոլոր ֆայլերում: Այն չի փնտրի ենթագրքերում:
Դուք կարող եք grep որոնում կատարել ընթացիկ գրացուցակի բոլոր ֆայլերում և բոլոր ենթագրքերում՝ օգտագործելով -r
ռեկուրսիվ որոնման տարբերակը.
grep -r search_term .
Կարող եք նաև նշել գրացուցակի ուղին, եթե այն գրացուցակում չեք, որտեղ ցանկանում եք կատարել որոնումը.
grep -r search_term directory_path
Դա արագ ամփոփում էր: Թույլ տվեք մանրամասնորեն ցույց տալ ձեզ այս ամենը պատշաճ օրինակներով, որպեսզի ձեզ համար ավելի հեշտ լինի հասկանալ:
Grep որոնում գրացուցակի բոլոր ֆայլերում
Ահա գրացուցակի կառուցվածքը, որը ես պատրաստվում եմ օգտագործել այս օրինակում: Բացի vala.txt-ից, բոլոր ֆայլերը պարունակում են «պարզ» տերմինը, որի վրա ես կկատարեմ grep որոնումը:
abhishek@LHB:~/scripts$ tree
.
├── dir1
│ └── new_script.sh
├── dir2
│ └── your_script.sh
├── dir3
│ ├── empty.txt
│ └── linked.txt -> ../../sample.txt
├── my_script.sh
└── your_script.sh
3 directories, 6 files
Ընթացիկ դիրեկտորիաների բոլոր ֆայլերում «պարզ» բառը որոնելու համար պարզապես օգտագործեք wild card (*): Wild card-ը իրականում փոխարինում է ընթացիկ գրացուցակի բոլոր ֆայլերի և գրացուցակների անուններով:
grep simple *
Սա կփնտրի ընթացիկ դիրեկտորիաների բոլոր ֆայլերում, բայց այն չի մտնի ենթագրքեր: Քանի որ դուք չեք կարող ուղղակիորեն grep որոնումը գրացուցակի վրա, այն ցույց կտա «XYZ is a directory» սխալը որոնման արդյունքների հետ միասին:
Եթե դուք նույն գրացուցակում չեք, որտեղ ցանկանում եք կատարել, կարող եք նշել գրացուցակի ուղին և ավարտել այն /*-ով:
grep search_term directory_path/*
Հիմնականում դուք օգտագործում եք wild card-ը տվյալ գրացուցակի բոլոր տարրերի (ֆայլերի և գրացուցակների) վրա ընդլայնելու համար։
Այժմ, երբ դուք դա գիտեք, եկեք տեսնենք, թե ինչպես կարող եք կատարել ռեկուրսիվ որոնում grep-ով, որպեսզի այն նաև փնտրի ենթագրքերում գտնվող ֆայլերը:
Grep ռեկուրսիվ որոնում գրացուցակի բոլոր ենթագրքերում
Grep-ը ռեկուրսիվ որոնման համար տրամադրում է -r
տարբերակ: Այս ընտրանքով grep-ը կդիտի ընթացիկ (կամ նշված) գրացուցակի բոլոր ֆայլերը, ինչպես նաև բոլոր ենթադիրեկտորիաների բոլոր ֆայլերը:
Ահա ռեկուրսիվ որոնումը, որը ես կատարեցի նախորդ օրինակում՝ ընթացիկ թղթապանակում grep որոնում կատարելու համար.
grep -r simple .
Ահա արդյունքը.
Կա նաև -R
տարբերակ ռեկուրսիվ որոնման համար և այն աշխատում է գրեթե նույնը, ինչ -r
տարբերակը։
grep -R simple .
Այսպիսով, ո՞րն է տարբերությունը grep -r
և grep -R
: Իրականում միայն մեկը. -R
-ի որոնումն անջատված է, ինչը նշանակում է, որ այն կհետևի խորհրդանշական հղումներին, որպեսզի գնա բնօրինակ ֆայլ (որը կարող է տեղակայված լինել համակարգի որևէ այլ մասում):
Նայեք նույն օրինակում -R
որոնման արդյունքին.
Նկատեցի՞ք, որ այն տալիս է լրացուցիչ որոնման արդյունք linked.txt
-ով, որը հիմնականում խորհրդանշական հղում է և դուրս է մնացել -r
տարբերակով grep որոնումից:
Եթե դուք այն գրացուցակում չեք, որտեղ ցանկանում եք կատարել ռեկուրսիվ որոնում, պարզապես տրամադրեք գրացուցակի բացարձակ կամ հարաբերական ուղին grep հրամանին.
grep -r search_term path_to_directory
Բոնուսային հուշում. Բացառեք որոշակի գրացուցակ ռեկուրսիվ grep որոնումից
Ամեն ինչ լավ է թվում, բայց ի՞նչ, եթե ցանկանում եք որոշակի գրացուցակ բացառել ռեկուրսիվ որոնումից: Դրա համար էլ դրույթ կա. Ես ձեզ ասացի, որ grep-ը չափազանց բազմակողմանի հրաման է:
grep -r --exclude-dir=dir_name serach_term directory_path
Դա այն չէ: Դուք կարող եք մեկից ավելի ենթագրքեր բացառել ռեկուրսիվ որոնումից հետևյալ կերպ.
grep -r --exclude-dir={dir1,dir2} serach_term directory_path
Ահա, թե ինչ տեսք ունեն բացառող դիրեկտորիաները մեր օրինակում այստեղ.
Եվ այո, ինչպես ցույց է տրված վերը նշված օրինակով, բացառումն աշխատում է և՛ -r
, և՛ -R
ռեկուրսիվ տարբերակներով:
Ամփոփել
Ահա մի քանի ֆայլերի և գրացուցակների համար grep որոնման օգտագործման արագ ամփոփում.
- grep string *
Որոնում է ընթացիկ գրացուցակի բոլոր ֆայլերում
- grep string dir
Որոնում է dir գրացուցակի բոլոր ֆայլերում
- grep -r string .
Ռեկուրսիվ որոնում բոլոր ենթադիրեկտորիաների բոլոր ֆայլերում
- grep -r string dir
Ռեկուրսիվ որոնում բոլոր ֆայլերում dir
- grep -R string .
Նույնը, ինչ r, բայց հետևում է խորհրդանշական հղումներին
Հուսով եմ, որ ձեզ դուր կգա այս արագ grep խորհուրդը: Եթե ցանկանում եք ավելին, կարող եք կարդալ այս մանրամասն ձեռնարկը grep հրամանի օգտագործման վերաբերյալ.
Տեղեկացրեք ինձ, եթե ունեք հարցեր կամ առաջարկություններ այս թեմայի վերաբերյալ: