• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Uniwersalne użycie grep w linuxie

Object Storage Arubacloud
+2 głosów
118 wizyt
pytanie zadane 21 maja 2020 w Inne języki przez Matibedi335 Początkujący (350 p.)

Witam, tworze program, który będzie wyszukiwał pliki .mp3 za pomocą idTagów. Używam do tego aplikacji id3tools.

Kod który obecnie mam pozwala mi na wyszukwanie poprawnie plików jedynie tych, w których ścieżka jest w miare podobna, tzn zawiera zawsze taką samą ilość "/". Musze jakoś uogólnić ten kod, jednak nie mam pomysłu jak.

#!/bin/bash

find /home -name \*.mp3 > piosenki.txt

while read linia ; do
    echo "$linia" > nowy.txt
    sciezka=`cut -d "/" -f 1,2,3,4 nowy.txt`
    nazwa=` cut -d "/" -f 5 nowy.txt`

    cd "$sciezka"
    id3tool "$nazwa" > tmp.txt

    if grep -q "2020" tmp.txt
    then
        echo $nazwa
fi

    cd
done < piosenki.txt

przykładowa ścieżka dla której to działa to np :

/home/bednar/Pobrane/nazwaPliku.mp3

 

1 odpowiedź

+2 głosów
odpowiedź 21 maja 2020 przez adrian17 Ekspert (344,860 p.)
wybrane 21 maja 2020 przez Matibedi335
 
Najlepsza

Po pierwsze, nie potrzebujesz tutaj w ogóle plików tymczasowych.

find /home -name \*.mp3 > piosenki.txt 
while read linia ; do

done < piosenki.txt

=>

for linia in `find /home -name \*.mp3`; do

done
    id3tool "$nazwa" > tmp.txt
    if grep -q "2020" tmp.txt

=> na przykład:

    dane=`id3tool "$nazwa"`
    if grep -q "2020" <<< $dane

etc etc.

A odpowiadając na pytanie: rozumiem, że chcesz rozbić ścieżkę na folder i nazwę pliku? Są do tego wbudowane narzędzia:

    sciezka=`dirname $linia`
    nazwa=`basename $linia`

(a dla pewności... w ogóle potrzebujesz ten `cd $sciezka`? nie można do id3tool przekazać całej ścieżki?)

komentarz 21 maja 2020 przez Matibedi335 Początkujący (350 p.)
Szczerze nie wiem czy potrzebuje tego cd $sciezka, jestem w to kompletnie zielony. Za porady wyżej bardzo dziękuję, spróbuję z tego skorzystać :D
komentarz 21 maja 2020 przez Matibedi335 Początkujący (350 p.)

@adrian17,

a wiesz może jak to poprawić żeby nazwa na każdą spacje nie wstawiała kropki i nowej liniI?
zdjecie 1zdjecei2

komentarz 21 maja 2020 przez adrian17 Ekspert (344,860 p.)

Oh, bo masz spacje w nazwach plików... współczuję :P

Na oko... czy dodanie 

IFS=$'\n'

na początku wystarczy? To mu powie żeby pętla chodziła tylko po liniach, nie po słowach rozdzielonych spacjami.

komentarz 21 maja 2020 przez Matibedi335 Początkujący (350 p.)
pomogło, no niestety tytuły piosenek tak są zapisane, dzięki wielkie znów :D

Podobne pytania

0 głosów
1 odpowiedź 529 wizyt
0 głosów
0 odpowiedzi 190 wizyt
pytanie zadane 13 listopada 2017 w Systemy operacyjne, programy przez MrBiałas Nowicjusz (190 p.)
0 głosów
0 odpowiedzi 566 wizyt
pytanie zadane 9 czerwca 2017 w Systemy operacyjne, programy przez nalq Nowicjusz (120 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...