Jak użyć BASH, aby zmienić „A” Train.flac na „A” Train w nazwie pliku?
1
Próbowałem każdej kombinacji odwrotnego ukośnika i gwiazdki oraz nawiasów klamrowych, nic nie działa. Korzystam z terminalu w OS X i naprawdę byłbym wdzięczny, gdyby ktoś mógł mnie kierować prosto.
Co masz na myśli? Czy zmieniasz „na” i / lub usuwasz .flac? Czy próbujesz zrobić to jako polecenie zbiorcze, czy tylko ten jeden plik?
evan.bovie
Mój skromny dzięki STATUS__ACCESS. Zaczęło się to od tego, że Windows nie lubił "na dysku sieciowym Mac OS X, prawdopodobnie z powodu pewnych zmian w Lionie. Pomyślałem (błędnie), że będzie to okazja, by dowiedzieć się więcej o skryptach BASH dzięki szybkiej zmianie nazwy.
zoltanzylox
Odpowiedzi:
0
Możesz użyć $() w celu zadania tr aby wykonać tę konwersję, usuń rozszerzenie pliku w drugim kroku. Wyglądałoby to podobnie do:
# Say FNAME is the variable that stores your original file name
# Convert the double quotes to single quotes:
SQFNAME=$(echo $FNAME|tr '""' "''")
# or, as an alternative in pure Bash (mind the shell character escaping):
SQFNAME=echo ${FNAME//\"/\'}
# then simply strip the extension
NEWFNAME=${SQFNAME%.flac}
# or, if you wanted to remove the extension delimited by the _last_ dot
NEWFNAME=${SQFNAME%.*}
# or, if you wanted to remove the extension delimited by the _first_ dot
NEWFNAME=${SQFNAME%%.*}
„Nowa” nazwa przekonwertowanego pliku będzie w pliku NEWFNAME teraz zmienna.
Użyłbym prename Skrypt Perla, który pochodzi z większości instalacji Perla (połączony z rename w np. Dystrybucje oparte na Debianie, ale np. Fedora inny rename jest obecny, więc najpierw zbadaj sprawę, jeśli nie jesteś pewien, lub po prostu użyj prename jak poniżej):
prename 's/"/'\''/g' \"A\"\ Train.flac
Właściwe narzędzie do właściwej pracy.
Aby dosłownie ', Najpierw zatrzymuję obecne środowisko cytowania, a następnie uciekam ', a następnie ponownie uruchom środowisko cytowania.
Myślę, że tak naprawdę nie chcesz usuwać rozszerzenia nazwy pliku, a pytanie jest po prostu niejednoznaczne, ale jeśli to zrobisz:
Odpowiedzi:
Możesz użyć
$()
w celu zadaniatr
aby wykonać tę konwersję, usuń rozszerzenie pliku w drugim kroku. Wyglądałoby to podobnie do:„Nowa” nazwa przekonwertowanego pliku będzie w pliku
NEWFNAME
teraz zmienna.Dowód koncepcji:
Wydajność wykonania:
źródło
Użyłbym
prename
Skrypt Perla, który pochodzi z większości instalacji Perla (połączony zrename
w np. Dystrybucje oparte na Debianie, ale np. Fedora innyrename
jest obecny, więc najpierw zbadaj sprawę, jeśli nie jesteś pewien, lub po prostu użyjprename
jak poniżej):Właściwe narzędzie do właściwej pracy.
Aby dosłownie
'
, Najpierw zatrzymuję obecne środowisko cytowania, a następnie uciekam'
, a następnie ponownie uruchom środowisko cytowania.Myślę, że tak naprawdę nie chcesz usuwać rozszerzenia nazwy pliku, a pytanie jest po prostu niejednoznaczne, ale jeśli to zrobisz:
lub
Użyj
-n
przełącznik, aby wyświetlić zmiany bez ich stosowania, jeśli chcesz wcześniej przetestować polecenia.źródło