ich ein Skript Schreiben von Dateien (Dropbox Kamera Uploads zum Beispiel,) zu bewegen, um Jahr benannte Ordner, wie folgt aus:ignorieren leer Matches während glob auf bash for-Schleife erweitert
#!/bin/bash
#
# Separate (camera) images on directory
# to year named folders.
#
# All files must be named as "yyyy-mm-dd HH:MM:SS.ext"
#
for img in *.{jpg,jpeg,png}; do
year=${img:0:4}
[ -d "$year" ] || mkdir "$year"
mv -iv "$img" "$year/"
done
Das Skript funktioniert wie erwartet für Matchin-Dateien, aber wenn keine Datei mit einer Erweiterung vorhanden ist, wird es auf *.ex
(die ersten beiden Erweiterungszeichen) erweitert. Dann erstellt es leere Verzeichnisse wie folgt:
'*.jp'
'*.jp'
'*.pn'
Wie kann ich einfach keine passenden Dateien ignorieren?
Ja, ich den Test verwenden würde. Aber die Nullglob-Optionen sehen sauberer aus. Nicht sicher, ob es sicherer ist. – paulodiovani
Danke für den '-p' Tipp. – paulodiovani
@paulodiovani Der Hauptunterschied ist, dass 'nullglob' Bash-spezifisch ist, der Test ist für die meisten Shells portabel. – Barmar