Ich habe eine Liste von Dateien von Anfang Juni bis heute, die willkürliche Namen mit dem Datum in ihnen haben.Bash-Skript zum Umbenennen der Datei in nur den Datum Teilstring im Dateinamen
Sie sind:
JUNE 13.pdf
JUNE 16 MIDTERM REVIEW LAND GRABS 1 EXCLUSION AND BACKGROUND,.pdf
LECTURE JUNE 21 RUBBER RIGHTS RESISTANCE.pdf
SUMMER JUNE 15 TITLING AND LEGIBILITY.pdf
SUMMER JUNE 22 LIVELIHOODS.pdf
summer JUN 14 PROPERTY RIGHTS LECTURE.pdf
Ich habe eine ganze Weile heute versuchen, den Fall von bash zu erhalten, aber in allen Lösungen, die ich geschaut haben bei wirklich komplizierte Syntax, die ich nicht verstehe. Ich weiß, dass Sie das Datum aus der Datei extrahieren und es entsprechend benennen können, aber ich möchte wirklich lernen, wie man Teilstrings mit bash extrahiert.
Die beste Lösung, die ich habe kommen mit hat sich von here
for j in *.pdf;
do
length=`expr match "$j" 'JUN[E, ] ??'`
ind=`expr index "$j" 'JUN' `
mv $j ${j:ind:length}
done
aber diese Lösung nur gibt mir viele Syntaxfehler ohne Angabe von dem, was ich falsch mache gefunden. Ich habe auch versucht, Schnitt, Umbenennen, einige andere "Standard" Zeug, aber ich habe wirklich Probleme.
Wären Sie bereit, Python oder eine andere, mächtigere Sprache zu verwenden? –
Wenn es eine ausführbare Shell-Befehl ist, dann ja, denke ich. – Jacob
'expr match' ist eine verankerte Übereinstimmung: Sie wird nur dem Anfang einer Zeichenfolge entsprechen. –