Ho provato ogni combinazione di barra rovesciata, asterisco e parentesi graffe, nulla sembra funzionare. Sto usando il terminale in OS X e lo apprezzerei molto se qualcuno potesse guidarmi dritto.
Ho provato ogni combinazione di barra rovesciata, asterisco e parentesi graffe, nulla sembra funzionare. Sto usando il terminale in OS X e lo apprezzerei molto se qualcuno potesse guidarmi dritto.
Risposte:
È possibile utilizzare $()per eseguire l'attività trdi conversione, quindi rimuovere l'estensione del file in un secondo passaggio. Sembrerebbe qualcosa di simile a:
# 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%%.*}
Il "nuovo" nome del file convertito sarà ora nella NEWFNAMEvariabile.
Verifica teorica:
#!/usr/bin/env bash
FNAME="\"A\" Train.flac"
echo "Unchanged name: $FNAME"
SQFNAME=${FNAME//\"/\'}
echo "Converted quotes: $SQFNAME"
NEWFNAME=${SQFNAME%.flac}
echo "New file name: $NEWFNAME"
Resa di esecuzione:
$ bash test.sh
Unchanged name: "A" Train.flac
Converted quotes: 'A' Train.flac
New file name: 'A' Train
Vorrei usare lo prenamescript Perl che viene fornito con la maggior parte delle installazioni Perl (collegato ad renamees. Nelle distribuzioni basate su Debian, ma su es. Fedora ne renameè presente un altro , quindi cerca prima il caso se non sei sicuro, o usa prenamecome sotto):
prename 's/"/'\''/g' \"A\"\ Train.flac
Lo strumento giusto per il lavoro giusto.
Per ottenere un valore letterale ', prima interrompo l'ambiente di quotazione corrente, quindi esco da a ', quindi riavvio l'ambiente di quotazione.
Immagino che tu non voglia davvero eliminare l'estensione del nome del file e la domanda è formulata in modo ambiguo, ma se lo fai:
prename 's/"/'\''/g; s/\..*$//' \"A\"\ Train.flac
o
prename 's/"/'\''/g; s/\.flac$//' \"A\"\ Train.flac
Utilizzare l' -ninterruttore per visualizzare le modifiche senza applicarle se si desidera testare i comandi in anticipo.