Am 12.03.2012 17:29, schrieb Christian Buhtz:
> Ich möchte in einem Verzeichnis alle Dateien, ausgenommen die 10
> neuesten (modification time), löschen. Was wäre hier der eleganteste
> Ansatz?
Also mein Ansatz ist foglender, wobei ich allerdings denke, dass hier in
meinem String irgendwie ein nicht-sichtbares Zeichen (escape-sequence?)
entsteht, welche rm verwirrt.
[code]
IFS=`
`
# ls: Dateien nach Datum sortiert
# sed: die erste (also jüngsten) vier Einträge löschen
# tr: Zeilenumbrüche durch Leerzeichen ersetzen
my_liste=$(ls ${1} -1t | sed '1,4d' | tr '\n' ' ')
# letztes Zeichen (welches???) entfernen
#my_liste_length=${#my_liste}
#my_liste=${my_liste:0:my_liste_length-1}
rm -v $my_liste
echo ${my_liste}
[/code]
rm meint aber die Dateien nicht finden zu können.
[out]
$ ./kill.sh "*z01*"
rm: Entfernen von „z015.jpg z019.jpg z017.jpg z014.jpg z011.jpg z016.jpg
“ nicht möglich: No such file or directory
z015.jpg z019.jpg z017.jpg z014.jpg z011.jpg z016.jpg
[/out]
Wenn ich die beiden auskommentierten Zeilen mitlaufen lasse, also das
lezte Zeichen abschneide
[out]
rm: Entfernen von „z015.jpg z019.jpg z017.jpg z014.jpg z011.jpg
z016.jpg“ nicht möglich: No such file or directory
^
[/out]
Wenn ich den rm-Befehl mit diesen Dateien von Hand eingeben,
funktioniert er problemlos.
--
publictimestamp.org/ptb/PTB-14291 sha256 2012-03-12 18:00:06
8AE0697732F2CB618C898607FF64CFEF28B2D0D2F00F55F18E4EC3972080E595