จะค้นหาสตริงภายในไฟล์ในโฟลเดอร์ได้อย่างไร?


98

มียูทิลิตี้ในการค้นหาสตริงภายในไฟล์ ASCII เพื่อหลีกเลี่ยงการค้นหาบรรทัดคำสั่งหรือไม่?

วิธีการค้นหาบรรทัดคำสั่งตัวอย่างเช่นสตริง "test" ในไฟล์ทั้งหมดในไดเรกทอรี/var/x/?


15
คุณหมายถึงโดยไม่ใช้บรรทัดคำสั่งจริงเหรอ? เพราะเครื่องมือที่ดีที่สุดสำหรับที่ยังคง grep ...
alci

ใน CLI ผู้ค้นหาซิลเวอร์อาจทำงานได้ดีขึ้น
ปาโบล

คำตอบ:


78

คุณสามารถใช้ปุ่มค้นหา เครื่องมือมีอยู่ในที่เก็บดังนั้นคุณสามารถทำได้ง่ายๆ

sudo apt-get install searchmonkey

ในทางกลับกันการค้นหาบรรทัดคำสั่งด้วย grep นั้นมีไว้สำหรับ ...

นี่คือภาพหน้าจอจาก searchmonkey

ป้อนคำอธิบายรูปภาพที่นี่


ขัดข้องเนื่องจากโหลดมากเกินไป :(
WiredIn

1
ฉันมีปัญหากับ searchmonkey มันไม่น่าเชื่อถือในแง่ที่ว่ามันทำให้เกิดเหตุการณ์มากมาย
tony gil

ฉันจะเรียกใช้ "searchmonkey" จาก GUI ได้อย่างไร หลังจากติดตั้งโดยใช้บรรทัดคำสั่งฉันไม่ต้องการใช้บรรทัดคำสั่ง
Echeban

153

ฉันคิดว่าคำถามแรกของคุณเกี่ยวกับทางเลือก GUI กับgrepคำสั่ง ฉันไม่สามารถช่วยคุณได้ฉันมักจะพบบรรทัดคำสั่งที่มีประสิทธิภาพมาก

สำหรับบรรทัดคำสั่งให้ลอง

grep "test" /var/x/*

หากคุณต้องการค้นหาแบบวนซ้ำ (เช่นไม่เพียง แต่อยู่ใน/var/x/แต่ยังอยู่ในไดเรกทอรีย่อยด้วย) ให้ทำ

grep -R "test" /var/x/

เพื่อหลีกเลี่ยงการ grepping ไฟล์ที่ grep คิดว่าเป็นไบนารีให้ใช้-Iตัวเลือก:

grep -I "test" /var/x/

หาก grep คิดว่าไฟล์เป็นแบบไบนารี่ (อิงตามสองสามไบต์แรกของไฟล์) มันจะถือว่ามันไม่ตรงกันแทนที่จะต้องผ่านทั้งไฟล์


1
มันจะทำงานได้ไหมถ้าโฟลเดอร์มีไฟล์ที่ไม่ใช่ ASCII?
อันวาร์

1
ดี grep ยังจะพยายามค้นหาสตริงในแฟ้มไบนารีและรายงานมันถ้ามันตรงกับ:Binary file file.jpg matches
มกราคม

1
@ มกราคมเมื่อไฟล์ไบนารีถูกอ่านเป็นข้อความมักจะมี "เส้น" ยาวมาก (เนื่องจากลำดับอักขระหรืออักขระที่จะตีความเพื่อกำหนดจุดสิ้นสุดของบรรทัดอาจไม่ปรากฏเป็นเวลานานหรือนาน) ทั้งนี้ขึ้นอยู่กับวิธีการที่ยูทิลิตี้ค้นหาข้อความจะดำเนินการนี้อาจทำให้เกิดปัญหาประสิทธิภาพการทำงานถ้าแต่ละสาย "" คือการอ่านอย่างเต็มที่ในหน่วยความจำแล้วตรวจสอบเพื่อดูว่าตรงกับสตริงการค้นหา (ซึ่งเป็นวิธีที่เหมาะสมในการgrepที่จะได้รับรหัสแม้ว่าฉัน ไม่ทราบว่าอูบุนตูgrepเขียนหรือเปล่า)
Eliah Kagan

1
"grep -i" สำหรับการค้นหาแบบคำนึงถึงขนาดตัวพิมพ์
Czarek Tomczak

3
ควรมี*หลังจากเครื่องหมายทับสุดท้ายในเส้นทางหรือ grep ไม่ปรากฏว่าทำงานใด ๆ ใน 14.04
DavidScherer

20

คุณสามารถใช้regexxerมันเป็นเครื่องมือค้นหา / แทนที่ GUI ที่ยอดเยี่ยมสำหรับการแสดงออกปกติ

คุณสามารถดาวน์โหลดได้โดย:

sudo apt-get install regexxer

ป้อนคำอธิบายรูปภาพที่นี่


มันเร็วมาก แต่ปัญหาที่ฉันมีกับแอปพลิเคชันนี้คือ: 1. มันไม่มีโหมดอ่านอย่างเดียวดังนั้นฉันจึงไม่ได้แทนที่หรือลบอะไรโดยบังเอิญ 2. มันแสดงข้อความ แต่มันจะไม่ย้ายไปที่เฉพาะ บรรทัดที่รูปแบบตรงกัน (ฉันเลื่อนรหัสไป 2,000 บรรทัดเพื่อค้นหาสิ่งที่ฉันทำหลังจากเปลี่ยนสีเป็นสีแดงสด!)
Mehrad Mahmoudian

6

ลองใช้ Recoll ซึ่งเป็น GUI ที่ดีที่สุดที่ฉันเคยใช้ หากต้องการติดตั้ง recoll ใน Ubuntu ทุกรุ่นที่รองรับในปัจจุบันให้เปิดเทอร์มินัลแล้วพิมพ์:

sudo apt install recoll

มันต้องใช้เวลาในการทำดัชนีไฟล์ก่อน (คุณสามารถกำหนดพา ธ ของบัญชีดำหรือนามสกุลหรือไฟล์ mime)


ผมสามารถยืนยันได้ว่า Recoll สมบูรณ์อีกโลกหนึ่งที่เกี่ยวกับหรือgnome-search-tool search-monkeyมันใช้ Xapian ดังนั้นจึงสามารถตรวจสอบและจัดทำดัชนีเอกสารคำ (ทั้ง. doc และ. docx), ไฟล์ pdf, โฟลเดอร์อีเมล ฯลฯ
Avio

เอ่อมันสามารถใช้งานได้ผ่านบรรจุภัณฑ์ deb ( sudo apt install recoll) และทำงานได้แม้กระทั่ง grep ที่ล้มเหลวเช่นเอกสาร. docx ที่ถูกบีบอัดด้วยการบีบอัด pkzip
Avio

โปรดทราบว่าrecollต้องมีการสร้างดัชนีก่อน
Yrogirg

5

คุณสามารถใช้grepคำสั่งจากเทอร์มินัล:

grep -r string *

คำสั่งนี้จะค้นหา "สตริง" ที่เกิดขึ้นทั้งหมดในไฟล์ทั้งหมดภายใต้ไดเรกทอรีปัจจุบัน (หรือหน่วยย่อย)

สำหรับไฟล์ที่ซ่อนอยู่คุณสามารถใช้:

grep -r string ..


2

น่าเสียดายที่ grep ทำงานได้ดีมากในการค้นหาภายในไฟล์ Word (.doc) แต่คุณสามารถไพพ์เอาต์พุต catdoc เป็น grep ได้ ฉันไม่ใช่โปรแกรมเมอร์ แต่สคริปต์ตัวนี้ใช้ได้ดีสำหรับฉัน:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

ยินดีต้อนรับการปรับปรุงและข้อเสนอแนะทั้งหมด!


1
คำถามนี้เกี่ยวกับแอปพลิเคชันกราฟิกและไฟล์ข้อความธรรมดา ผมไม่แน่ใจว่าสิ่งที่grepและ.docต้องทำด้วยคำถาม
Andrea Corbellini

grepดูเหมือนว่าตกลงดูคำตอบรายละเอียดเกี่ยวกับเดือนมกราคม
aquaherd

2

ฉันเพิ่งเปิดตัวเครื่องมือง่ายๆในการทำงาน ความคิดส่วนใหญ่สำหรับนักพัฒนาซอฟต์แวร์มันมีคุณสมบัติ (ไม่เหมือนใคร) ของการเปิดไฟล์หลายไฟล์ในหน้าต่างเดียวกัน มันนำเสนอผลลัพธ์ในเบราว์เซอร์โดยใช้โปรแกรมแก้ไข Ace (แนะนำใหม่!) หรือ HTML textarea มันเป็นเครื่องมือที่ใช้ภาษาจาวาเพื่อให้ทำงานใน windows เช่นเดียวกับใน linux

ลองดูสิ!

https://sourceforge.net/projects/queacetu.gastona.p/


1

ต่อhttps://askubuntu.com/a/1141367/47073

คุณสามารถใช้mate-search-toolซึ่งเป็นสิ่งเดียวกับgnome-search-toolที่ถูกลบออก ฉันมีปัญหากับ searchmonkey มันหายไปบางผลลัพธ์และช้าไม่แนะนำ

วิธีติดตั้งmate-search-tool:

sudo apt install mate-utils
mate-search-tool

0

คุณสามารถใช้ตัวเลือกSublime Text Find in FilesจากFindเมนูเพื่อค้นหาสตริงภายในไฟล์จากโฟลเดอร์

ในการติดตั้ง Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

นอกจากนี้คุณยังสามารถทำตามนี้คำถามสำหรับวิธีการที่เป็นไปได้อื่น ๆ ของการติดตั้งSublimeในอูบุนตู

ในการค้นหาสตริงทั้งหมดจากโฟลเดอร์ในSublime Textคุณสามารถทำตามคำถามนี้เพื่อหาคำตอบที่ชัดเจนยิ่งขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.