Ich bin neu zu schreiben Bash und ich bin mir sicher, dass ich das auf die harte Tour, also wenn jemand kann mir helfen, meinen Code zu reduzieren oder sagen Sie mir, was falsch ist, wäre fantastisch.Schleife durch Unterverzeichnisse explodierenden Dateinamen mit Bash
Ich versuche, durch ein Hauptverzeichnis sowie Unterverzeichnisse zu finden, Dateinamen zu finden und sie zu explodieren, damit ich Teile aus den Dateinamen herausziehen kann.
Meine Verzeichnisstruktur geht so, das ist nur ein Beispiel. Die Ordner wie „0000“ variieren
/images/0000/somefilename1_this.jpg
/images/1111/somefilename2_this.jpg
/images/2222/somefilename3_this.jpg
/images/3333/somefilename4_this.jpg
Mein Skript funktioniert gut, bis ich zu FINALIFS='_' read -ra FINALNAME <<< "$FINALSTR";
bekommen, wo ich versuche, die Dateinamen durch einen Unterstrich zu explodieren und es in einem Array zu erhalten. Wenn ich echo ${FINALNAME[0]};
es ist leer. Auf der letzten for done
bekomme ich einen synax-Fehler, wenn ich letztens for done
auskommentiere bekomme ich nicht mehr den Syntaxfehler.
Mein ultimatives Ziel ist es, einen Teil der Dateinamen und deren aktuelles Verzeichnis in Variablen zu bekommen, damit ich später etwas machen kann.
0000 somefilename1
1111 somefilename2
2222 somefilename3
3333 somefilename4
Jede Hilfe wäre willkommen.
for d in */ ; do
for file in "$d"*.jpg ; do
STR="$file";
IFS='/' read -ra SPLITNAMES <<< "$STR";
for i in "${SPLITNAMES[1]}"; do
FINALSTR="$i";
FINALIFS='_' read -ra FINALNAME <<< "$FINALSTR";
echo ${FINALNAME[0]}; <-- this is empty
for b in "${FINALNAME[0]}"; do
done <-- I get a syntax error here
done
# mkdir /images/$d$(date '+%Y-%m-%d');
# mv /images/$d$(date '+%Y-%m-%d')_* /images/$d$(date '+%Y-%m-%d');
done
done
'echo $ FILE | geschnitten -d/-f3- | Schnitt -d_ -f1 | tr '/' '' ' –
In' um einen Teil der Dateinamen zu erhalten' Gibt es einen konstanten Teil, der am Ende jedes Dateinamens weggelassen werden soll. Bitte aktualisieren Sie die erwartete Ausgabe in diesem Fall – sjsam
'IFS' ist eine Variable, nach der' read' in ihrer Umgebung sucht; 'FINALIFS' ist nicht. – chepner