stat und touch bei Linux und *BSD

05/08/2014 - 19:53 von Helmut | Report spam
Hallo alle miteinander,

ich komme bei meinen Experimenten nicht weiter, vor allem deshalb nicht,
weil ich weder eine *BSD- noch eine OS X/Darwin-Installation habe ...

Ausgangspunkt ist die (selbstgestrickte) Funktion

crlf2lf() {
test -f "$1" || return
grep -q -m1 $'' "$1" || return
OrigDat=$(stat -c %y "$1")
sed -i 's///g' "$1"
touch -d "$OrigDat" "$1"
}
# ist derzeit nur für GNU/Linux


Sie soll bei MSDOS-Dateien aus dem "CRLF" ein Linux-"LF" machen, also
das "CR" (hex 0x0d) löschen und dann den "timestamp" der Datei
restaurieren.

Unter GNU-Linux funktioniert das brav.

Darwin scheint "sed -i" nicht zu kennen, dort werden mir Fehler
berichtet.

"touch" scheint bei BSD/Darwin die Option "-d" nicht zu kennen, aber die
Option "-t", mit einem etwas anderen Zeit-Format (anscheinend ohne "-"
als Trenner).

Und bei "stat" (was den Zeitstempel für "touch" beschafft) habe ich noch
überhaupt keine Idee, mit welchen Optionen ich da arbeiten muss oder
kann. Ich vermute, dass "-t" weiterhilft, aber da habe ich noch nichts
Verwertbares gefunden.

Wie sàhe das entsprechende Skript für *BSD sowie für Darwin aus?

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".
 

Lesen sie die antworten

#1 Rupert Haselbeck
05/08/2014 - 21:00 | Warnen spam
Helmut Hullen schrieb:

Sie soll bei MSDOS-Dateien aus dem "CRLF" ein Linux-"LF" machen, also
das "CR" (hex 0x0d) löschen und dann den "timestamp" der Datei
restaurieren.



Wenn es dir nur darum geht, dann wàre IMHO ein Blick nach
http://dos2unix.sourceforge.net/
zu empfehlen.

MfG
Rupert

Ähnliche fragen