Wyciągnięcie nazwy plików:
cat plik | grep -o 'sound[^3]*3'
Może być ?
Komenda powstała na podstawie powieści ... https://forum.linux.pl/index.php?topic=20990.0
zapisujesz do pliku dodając na końcu komendy
następnie na podstawie listy nazw tych plików skopiować je z jednego katalogu
# liczba lini w pliku
aa=$(cat plik2 | wc -l)
# Petla
for i in `seq 1 $aa`
do
# info
echo "Linia nr. $i / $aa"
# ab=linia z pliku
ab=$(awk 'NR=='$i plik2)
# kopiowanie
cp $ab gdzieś_indziej
done
To juz lepiej zapisać do skryptu bash i uruchomić.
Przykład kursu basha z sieci http://dief.republika.pl/main.html
Orginalny: http://mywiki.wooledge.org/BashGuide
Z wyszukaniem nazw sobie poradziłem po drobnej poprawce:
cat baza.txt | grep -o 'sound[^.]*.mp3' > plik2.txt
Także mam plik plik2.txt z nazwami plików dźwiękowych w postaci nazwa.mp3 (bez żadnych dodatków typu sound czy jakieś inne znaki), oczywiście każdy w osobnej linii.
Ale ze skryptem coś nie wychodzi
#!/bin/bash
# liczba lini w pliku
aa=$(cat /media/dane/plik2.txt | wc -l)
# Petla
for i in `seq 1 $aa`
do
# info
echo "Linia nr. $i / $aa"
# ab=linia z pliku
ab=$(awk 'NR=='$i /media/dane/plik2.txt)
# kopiowanie
cp $ab /media/dane/collection.media /media/dane/sound
done
Zwraca:
Linia nr. 398 / 1373
cp: nie można wykonać stat na „01764811.mp3”: Nie ma takiego pliku ani katalogu
cp: katalog „/media/dane/collection.media” został pominięty
co jest nieprawdą, bo plik o takiej nazwie jest na liście i w katalogu źródłowym.
A na tą stronę
https://forum.linux.pl/index.php?topic=20990.0 (https://forum.linux.pl/index.php?topic=20990.0)
nie mogę wejść bo się pokazuje komunikat:
Połączenie nie jest bezpieczne
Właściciel witryny forum.linux.pl niepoprawnie ją skonfigurował. Program Firefox nie połączył się z nią, aby chronić użytkownika przed kradzieżą informacji.
/media/dane/plik2.txt
Jesli potrzebujesz roota zeby zapisać tam plik, to zapisuj do /tmp lub katalogu użytkownika którego aktualnie używasz.
Ze wzgledu że używanie roota do zwykłych celów nie jest zalecane.
# kopiowanie
cp $ab /media/dane/collection.media /media/dane/sound
$ab to jest nazwa pliku z twojej listy w plik2.txt
http://www.arturpyszczuk.pl/commands-cp.html
Zamień sobie i sprawdz jak działa
#!/bin/bash
# liczba lini w pliku
aa=$(cat /media/dane/plik2.txt | wc -l)
# Petla
for i in `seq 1 $aa`
do
# ab=linia z pliku
ab=$(awk 'NR=='$i /media/dane/plik2.txt)
# info
echo "Linia nr. $i / $aa - $ab"
# kopiowanie
cp /media/dane/collection.media/$ab /media/dane/sound
done
i zobaczysz przykładowo coś w tym stylu:
Linia nr. 398 / 1373 - 01764811.mp3