Unix un-liner pentru a extrage substring din toate fișierele într-un director și subdirectoare

Căut un unic de linii UNIX care va transmite la un fișier toate aparițiile NSLocalizedString (de la acel cuvânt la sfârșitul liniei) în toate fișierele din directorul curent și toate subdirectoarele. Am ghidat, dar nu am găsit o soluție.

0

2 răspunsuri

find -type f -print | xargs grep NSLocalizedString | tee should do what you're looking for, if I understand the question right...

0
adăugat
"xargs: grep: Argument list too long" eroare
adăugat autor user1161418, sursa
adăugați -n 100 sau ceva după xargs pentru a limita numărul de fișiere pe care le va procesa într-o singură lot
adăugat autor twalberg, sursa
Doriți să faceți find ... -print0 | xargs -0 ... pentru a gestiona fișiere/directoare cu spații în nume.
adăugat autor Nikolai Fetissov, sursa
find . -type f -exec fgrep NSLocalizedString {} \+ | \
    sed -e 's/^.*\(NSLocalizedString.*\)$/\1/' > ../your_output_file
0
adăugat
Acest lucru devine substring din fișierele din CWD, dar nu și subdirectoarele. Marchează, folosind sugestia dvs., conduce la o eroare de eroare "grep: warning: recursive search of stdin"
adăugat autor user1161418, sursa
@ user1161418 - Prin Aceasta devine substringul din fișierele din CWD, dar nu subdirectoarele vrei să spui sugestia lui Mark sau răspunsul meu? Vă asigur că find începe în directorul curent, dar coboară prin subdirectoare. (Am testat acest lucru un singur liner înainte de a posta-l)
adăugat autor Stephen P, sursa
Soluție bună: Deși vă voi sugera să utilizați ':' în comanda substituent sed în loc de/pentru a face vizibil mai puțin dăunător
adăugat autor mawia, sursa
S-ar putea să utilizați grep -ri 'NSLocalizedString' ai dreptate?
adăugat autor Mark Roberts, sursa
Îmi pare rău, intenționam să ofer o comandă de nivel înalt. grep -ri 'NSLocalizedString' * sed . Ați putea folosi și ack-grep pentru acest lucru, dar de obicei nu este instalat implicit.
adăugat autor Mark Roberts, sursa