Ich versuche Songs über eine Bash-Shell for-Schleife noch Entfernen einer Datei wie dieseWie kann man Sonderzeichen umgehen?
while read item; do rm "$item"; done < duplicates
wird immer gefangen auf Song-Namen zu entfernen. Ist es möglich, das zu umgehen? Meine Songtitel könnten wie folgt aussehen:
/home/user/Music/Master List's Music/iTunes/iTunes\ Music/John\ Mayer/Room\ for\ Squares\ \[Aware\]/07\ 83.m4a
/home/user/Music/Master List's Music/bsg\ season\ 1\ \(Case\ Conflict\ 1\)/06\ A\ Good\ Lighter.mp3
/home/user/Music/Master List's Music/Nino\ Rota/The\ Godfather\ Pt.\ 3/14\ A\ Casa\ Amiche.m4a
wie Sie sehen können, um einen Artikel zu entfernen ich kein% haben kann() [] oder irgendetwas anderes, ohne entkommen lassen, wenn sie das ist.. vor der Dateierweiterung natürlich. Gibt es einen Weg, Sondercharakteren wie diesem zu entkommen?
Zum Beispiel habe ich sed die% 20 in die Räume zu verwandeln:
cat duplicates | sed 's/%20/\\ /g' > clean_duplicates
Der Ausgang Ich bin für aussieht wie folgt aussehen:
/home/user/Music/Master\ List\'s\ Music/iTunes/iTunes Music/John\ Mayer/Room\ for\ Squares\ \[Aware\]/07\ 83.m4a
/home/user/Music/Master\ List\'s\ Music/bsg\ season\ 1\ \(Case\ Conflict\ 1\)/06\ A\ Good\ Lighter.mp3
/home/user/Music/Master\ List\'s\ Music/Nino\ Rota/The Godfather\ Pt\.\ 3\/14\ A\ Casa\ Amiche.m4a
Können Sie sicher sein, dass zwei Dateien 'foo% 20bar' und' foo bar' wirklich Duplikate sind? I.e. genau die selbe Datei, damit du 'foo% 20bar' getrost wegblasen kannst ohne etwas zu verlieren? – Kaz
Oder sagen Sie, dass die Duplikatdatei prozentcodierte Namen enthält, aber die Dateien im Dateisystem nicht solche Namen haben? – Kaz
@Kaz, eine solide Frage ... Ich benutze Banshee Banshee.db-Datei, die bereits alles indiziert hat und diese Dateinamen, die ich aufgelistet habe, sind eigentlich die URI in einer Tabelle mit allen Spuren. –