kzen.dev
  • Frågor
  • Taggar
  • Användare
Meddelanden
Belöningar
Registrering
När du har registrerat dig kommer du att få information om svar och kommentarer på dina frågor.
Logga in
Om du redan har ett konto loggar du in för att kontrollera nya meddelanden.
Det kommer att finnas belöningar för frågor, svar och kommentarer.
Mer
Källa
Redigera
 Nathan
Nathan
Question

Hur hittar jag alla filer som innehåller en viss text i Linux?

Jag försöker hitta ett sätt att söka igenom hela mitt Linux-system efter alla filer som innehåller en viss textsträng. För att förtydliga, jag letar efter text i filen, inte i filnamnet.

När jag letade efter hur man gör detta, stötte jag på den här lösningen två gånger:

find / -type f -exec grep -H 'text-to-find-here' {} \;

Det fungerar dock inte. Den verkar visa varje enskild fil i systemet.

Är detta nära det rätta sättet att göra det på? Om inte, hur ska jag göra? Denna förmåga att hitta textsträngar i filer skulle vara utomordentligt användbar för några programmeringsprojekt jag håller på med.

4881 2013-06-06T08:06:45+00:00 3
Peter Mortensen
Peter Mortensen
Redigerad fråga 2017ör maj 2017 в 11:40
Programmering
text
linux
directory
find
grep
Popular videos
How to list all file names containing a given text using command line in Linux - Linux Tricks
How to list all file names containing a given text using command line in Linux - Linux Tricks
för 5 år sedan
How to Find Files in Linux | Learning Terminal
How to Find Files in Linux | Learning Terminal
för 4 år sedan
Linux/Mac Terminal Tutorial: The Grep Command - Search Files and Directories for Patterns of Text
Linux/Mac Terminal Tutorial: The Grep Command - Search Files and Directories for Patterns of Text
för 5 år sedan
Find a file that contains certain text - Linux Mint / Ubuntu
Find a file that contains certain text - Linux Mint / Ubuntu
för 5 år sedan
Section 7
Section 7
för 9 år sedan
Section 1: More Comfortable
Section 1: More Comfortable
för 9 år sedan
CS50 2015 - Week 1, continued
CS50 2015 - Week 1, continued
för 7 år sedan
Web Programming - Computer Science for Business Leaders 2016
Web Programming - Computer Science for Business Leaders 2016
för 7 år sedan
All About Athletium
All About Athletium
för 1 år sedan
Linux Mint 20.2 Cinnamon- Tutorial  for new users.
Linux Mint 20.2 Cinnamon- Tutorial for new users.
för 1 år sedan
Linux Mint 20.2 File Manager (Nemo) Tutorial for cinnamon.
Linux Mint 20.2 File Manager (Nemo) Tutorial for cinnamon.
för 1 år sedan
Welcome to MX Linux 19.4 for new users.
Welcome to MX Linux 19.4 for new users.
för 2 år sedan
itlearning: Kopiera mapp eller fil från en kurs till en annan
itlearning: Kopiera mapp eller fil från en kurs till en annan
för 9 år sedan
Hur hittar jag undertexterna på youtubefilmer? - en tittarfråga
Hur hittar jag undertexterna på youtubefilmer? - en tittarfråga
för 2 år sedan
Dela mappar och filer i OneDrive
Dela mappar och filer i OneDrive
för 5 år sedan
Linux Mint 20.2 Cinnamon - Notifications & Accessibility.
Linux Mint 20.2 Cinnamon - Notifications & Accessibility.
för 1 år sedan
MX 19.4 Xfce - Thunar file Manager Tips.
MX 19.4 Xfce - Thunar file Manager Tips.
för 1 år sedan
Grunderna i Finder (textad)
Grunderna i Finder (textad)
för 9 år sedan
Hur man sparar dokument och skapar mappar i Word - PC hjälpen
Hur man sparar dokument och skapar mappar i Word - PC hjälpen
för 2 år sedan
Words at War: The Veteran Comes Back / One Man Air Force / Journey Through Chaos
Words at War: The Veteran Comes Back / One Man Air Force / Journey Through Chaos
för 10 år sedan
NOOBS PLAY MOBILE LEGENDS LIVE
NOOBS PLAY MOBILE LEGENDS LIVE
för 4 år sedan
Funktionell Programmering Del 5: Programmeringsparadigm 2021
Funktionell Programmering Del 5: Programmeringsparadigm 2021
för 2 år sedan
Filmora9在linux 🐧  之Ubuntu20.04 的 两种体现形式以及问题的解决; 最好的视频编辑工具,支持Mac🍎 Windows 💻; Wondershare VS  Kdenlive
Filmora9在linux 🐧 之Ubuntu20.04 的 两种体现形式以及问题的解决; 最好的视频编辑工具,支持Mac🍎 Windows 💻; Wondershare VS Kdenlive
för 3 år sedan
Macos🍎 Windows 💻Play On Linux 🐧 之Ubuntu20.04; QQ,音乐,微信,Foxmail无乱码; office,xcode 可运行;WineVSDarling...
Macos🍎 Windows 💻Play On Linux 🐧 之Ubuntu20.04; QQ,音乐,微信,Foxmail无乱码; office,xcode 可运行;WineVSDarling...
för 3 år sedan
Linux Mint 20.2 Cinnamon -Recommended Applications for New User.
Linux Mint 20.2 Cinnamon -Recommended Applications for New User.
för 1 år sedan
Installing Linux for beginners .. It is simple !.. just watch my video ,
Installing Linux for beginners .. It is simple !.. just watch my video ,
för 2 år sedan
Linux Basics: How to List Directory Contents (ls)
Linux Basics: How to List Directory Contents (ls)
för 5 år sedan
LEARN MQL5 TUTORIAL BASICS - 37 SIMPLE SOURCECODE IMPORT
LEARN MQL5 TUTORIAL BASICS - 37 SIMPLE SOURCECODE IMPORT
för 3 år sedan
AutoSubtitles2| 快速稳定地准确无误地支持全球化语言的两种方法;排除YouTube自动翻译,谷歌翻译“不人性化”的错误;支持Windows,Mac,Linux #自动化批量翻译
AutoSubtitles2| 快速稳定地准确无误地支持全球化语言的两种方法;排除YouTube自动翻译,谷歌翻译“不人性化”的错误;支持Windows,Mac,Linux #自动化批量翻译
för 3 år sedan
Linux Mint 20.1 -VP8 and WebP & compression-uncompressed files.
Linux Mint 20.1 -VP8 and WebP & compression-uncompressed files.
för 2 år sedan
C++ | Модификаторы Типов | Указатели  Ссылки | 03
C++ | Модификаторы Типов | Указатели Ссылки | 03
för 1 år sedan
« Föregående
Nästa »
Den här frågan har 1 svar på engelska, för att läsa dem logga in på ditt konto.
Solution / Answer
 rakib_
rakib_
2013ör juni 2013 в 8:21
2013-06-06T08:21:35+00:00
Mer
Källa
Redigera
#19572230

Gör följande:

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • -r eller -R är rekursivt,
  • -n är linjenummer, och
  • -w står för att matcha hela ordet.
  • -l (L med små bokstäver) kan läggas till för att bara ange filnamnet på matchande filer.

Tillsammans med dessa kan flaggor som --exclude, --include, --exclude-dir användas för effektiv sökning:

  • Detta kommer endast att söka igenom de filer som har .c eller .h-tillägg:

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
  • Detta kommer att utesluta sökning av alla filer som slutar med .o-tillägget:

    grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
  • För kataloger är det möjligt att utesluta en viss katalog (eller vissa kataloger) med hjälp av parametern --exclude-dir. Detta kommer till exempel att utesluta katalogerna dir1/, dir2/ och alla kataloger som matchar *.dst/:

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"

Detta fungerar mycket bra för mig, för att uppnå nästan samma syfte som ditt.

Fler alternativ finns i man grep.

 rakib_
rakib_
Redigerat svar 2018ör januari 2018 в 3:57
8797
0
 fedorqui
fedorqui
2013ör juni 2013 в 8:08
2013-06-06T08:08:46+00:00
Mer
Källa
Redigera
#19572229

Du kan använda grep -ilR:

grep -Ril "text-to-find-here" /
  • i står för ignorera fall (valfritt i ditt fall).
  • R står för rekursiv.
  • l står för "visa filnamnet, inte själva resultatet".
  • / står för att börja vid roten på din maskin.
 fedorqui
fedorqui
Redigerat svar 2016ör februari 2016 в 10:02
1390
0
 Stephan
Stephan
2013ör juni 2013 в 8:26
2013-06-06T08:26:58+00:00
Mer
Källa
Redigera
#19572231

Du kan använda ack. Det är som grep för källkod. Du kan skanna hela ditt filsystem med den.

Gör bara:

ack 'text-to-find-here'

I din rotkatalog.

Du kan också använda reguljära uttryck, ange filtyp osv.


UPDATE

Jag upptäckte just The Silver Searcher, som är som ack men 3-5x snabbare än det och som till och med ignorerar mönster från en .gitignore-fil.

 RAJ
RAJ
Redigerat svar 2015ör mars 2015 в 12:31
306
0
Lägg till en fråga
Kategorier
Alla
Teknik
Kultur / fritid
Livet / Konst
Vetenskap
Professionell
Företag
Användare
Alla
Ny
Populära
1
Daniel Gogov
Registrerad för 6 dagar sedan
2
工藤 芳則
Registrerad för 1 vecka sedan
3
Ирина Беляева
Registrerad för 2 veckor sedan
4
Darya Arsenyeva
Registrerad för 2 veckor sedan
5
anyta nuam-nuam (LapuSiK)
Registrerad för 2 veckor sedan
CS
DA
DE
EL
ES
FI
FR
ID
IT
JA
LT
NL
PT
RO
RU
SL
SV
TR
ZH
© kzen.dev 2023
Källa
stackoverflow.com
under licens cc by-sa 3.0 med angivande av