bash --- operacje na nazwie pliku

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
Inquistor
Beginner
Posty: 122
Rejestracja: 25 września 2007, 20:48

bash --- operacje na nazwie pliku

Post autor: Inquistor »

Pisze mały skrypcik do konwersji plików mp3 oparty o lame, i chciałbym żeby do nazwy pliku wyjściowego dopisywał np. "nazwa_pliku_[256kbps].mp3"

Na początku pliku i na końcu to nie żaden problem, ale jak umieścić to info o bitrate przed kropką ?
zulowski
Posty: 68
Rejestracja: 22 maja 2007, 10:47

Post autor: zulowski »

1. zapamietaj nazwe pliku
2. sprawdz dlugosc (strlen)
3. odejmij 4 (kropka +mp3)
4. stworz nowa nazwe pliku skladajacą się z liter tych sprzed kropki
5. dodaj bitrate
6. dodaj koncowke .mp3
Awatar użytkownika
Inquistor
Beginner
Posty: 122
Rejestracja: 25 września 2007, 20:48

Post autor: Inquistor »

Całość schematu jest dla mnie oczywista, robiłem podobny skrypt pod php, jednakże nie moge znaleśc strlen w bashu :/ Mam jakieś braki czy co...
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post autor: mlyczek »

Zrób tak

Kod: Zaznacz cały

nazwa_wyjsciowa="`basename $nazwa_pierwotna .mp3`[$rate].mp3"
.mp3 w basename jest oddzielona od $nazwa_pierwotna. To jest rozszerzenie jakie ma być usuniętę z końca pliku.
Awatar użytkownika
Inquistor
Beginner
Posty: 122
Rejestracja: 25 września 2007, 20:48

Post autor: Inquistor »

dzieki mlyczek ;-)

Tu podaje cały skrypt, moze sie komuś przyda. Z uwagi na to, że jest to mój pierwszy skrypt, moga wystąpić błędy składniowe etc :p

Kod: Zaznacz cały

#!/bin/bash
# Autor: Jarosław Zywert / [url]www.inquistor.info/blog[/url]

if [ -x /usr/bin/lame ]
	then
		echo "Lame: OK"
else
	echo "Nie masz zainstalowanego pakietu Lame
Zainstaluj pakiet za pomocą aptitude, apt-get lub innego managera pakietów"
exit
fi

bitrate="$2"
nazwa_pierwotna="$3"
nazwa_wyjsciowa="`basename $nazwa_pierwotna .mp3`[$bitrate kbps].mp3"

case $1 in
  -h) echo "	POMOC:
	Konwerter MP3
	Opis: Skrypt do konwersji bitrate plików mp3

	SK£ADNIA:
	mp3bitrate [-OPCJA] [BITRATE] [PLIK]

	-s -konwersja pojedynczego pliku, skonwertowany 
	plik ma nazwę nazwa_pliku[BITRATE].mp3
  	-a -konwersja calego aktualnie otwartego folderu,
  	wyjscie zapisywane jest w podrzednym folderze 
  	[BITRATE]. Domyślny bitrate to 128kbps.  	
	" ;;
  	
  	
  -s) lame --mp3input -b "$2" "$nazwa_pierwotna" "$nazwa_wyjsciowa" ;;
  
  
  -a) mkdir "$2kbps"
  	for i in *.mp3
		do lame --mp3input -b "$2" "$i" "$2kbps/$i"
	done | echo "Konwersja zakończona pomyślnie.";;
	
	
	
  *) echo "Brak odpowiednich argumentów
Pomoc jest dostepna pod: mp3bitrate -h" ;;
esac

wklej.org -> http://wklej.org/txt/a66b094a6e
ODPOWIEDZ