Es ist lange her, dass ich irgendeine Art von Unix-Programm geschrieben habe, aber ich habe versehentlich das Jahr auf einer Reihe von Weihnachtsfotos falsch eingestellt, und ich wusste, dass es später ein Problem sein würde, wenn ich das Datum von 2015 auf 2014 nicht ändern würde .
Vielleicht ist dies eine leichte Aufgabe, aber ich habe keinen einfachen Weg gefunden, dies zu tun.
Ich habe ein Skript geändert, das ich hier gefunden habe und das ursprünglich verwendet wurde, um das Datum um minus einen Monat zu ändern.
Hier ist das Original-Skript:
#!/bin/bash
# find specific files
files=$(find . -type f -name '*.JPG')
# use newline as file separator (handle spaces in filenames)
IFS=$'\n'
for f in ${files}
do
# read file modification date using stat as seconds
# adjust date backwards (1 month) using date and print in correct format
# change file time using touch
touch -t $(date -v -1m -r $(stat -f %m "${f}") +%Y%m%d%H%M.%S) "${f}"
done
Hier ist mein modifiziertes Skript, das das Datum auf das Jahr "2014" zwang:
#!/bin/bash
# find specific files
#files=$(find . -type f -name '*.JPG')
# use newline as file separator (handle spaces in filenames)
IFS=$'\n'
for f in $*
do
# read file modification date using stat as seconds
# adjust date backwards (1 month) using date and print in correct format
# change file time using touch
touch -t $(date -v +1y -r $(stat -f %m "${f}") +2014%m%d%H%M.%S) "${f}"
done
Mir ist jetzt klar, dass ich eine allgemeinere Version hätte machen können:
#!/bin/bash
# find specific files
#files=$(find . -type f -name '*.JPG')
# use newline as file separator (handle spaces in filenames)
IFS=$'\n'
for f in $*
do
# read file modification date using stat as seconds
# adjust date backwards (1 month) using date and print in correct format
# change file time using touch (+1y adds a year "-1y" subtracts a year)
# Below line subtracts a year
touch -t $(date -v -1y -r $(stat -f %m "${f}") +%Y%m%d%H%M.%S) "${f}"
# Below line adds a year
# touch -t $(date -v +1y -r $(stat -f %m "${f}") +%Y%m%d%H%M.%S) "${f}"
done
Um diese Datei zu verwenden, müssten Sie sie schreiben und
chmod +x fn
ausführen:
./fn files-to-change
fn = Ihr-Dateiname-der-ist-Ihr-Befehl
Beispiel
./fn *.JPG
ändert das Datum in dem Verzeichnis, in dem Sie sich befinden, um minus ein Jahr.
touch -d "2 hours ago" /path/*.txt
Zum Beispiel.