2016-07-17 17 views
0

Ich habe ein Problem mit Shell-Skript. Ich versuche, alle Dateien, die älter als das Datum durch den Parameter zu bewegen Ich gehe (wie # 2 aus dem Ordner als # 1 bestanden), verwende ich zur Zeitbehalten Null auf der linken Seite mit BC calc

#/bin/bash 
cd $1  # Parameter 1: 
for i in * 
do 
var=$(echo $(ls -l --time-style=+%d%m%y $i) | awk '{print $6}' | bc) 
temp=$(echo $2 | bc) 
if [ $var -lt $temp ] 
then 
cp $i /home/igor/olders 
fi 
done 

aber das Problem ist, wenn das Datum vor dem Tag ist 10. Ich Ich weiß nicht, wie ich diese Nummer größer machen soll als die Bestellungen, wie 01/07/16 wird kleiner sein als 13/06/16. Kann mir jemand helfen?

+1

Sie könnten dafür 'finden'. –

+0

Wo wird das Datum als Parameter übergeben? – sjsam

+0

@sjsam das Datum als Parameter übergeben wird, wenn Sie das Skript aufrufen, wie $ Skript 130616 –

Antwort

1

Möglicherweise möchten Sie die Alternative verwenden, in dem Kommentar vorgeschlagen:

find -newerXY reference 

Zitiert die manpage for find(1):

Vergleicht die Zeitstempel der aktuellen Datei mit Bezug. Das Referenzargument ist normalerweise der Name einer Datei (und einer seiner Zeitstempel wird für den Vergleich verwendet), aber es kann auch eine Zeichenfolge sein, die eine absolute Zeit beschreibt. X und Y sind Platzhalter für andere Buchstaben, und diese Buchstaben wählen aus, welche Zeit zu der Referenz für den Vergleich gehört.
Einige Kombinationen sind ungültig; Zum Beispiel ist es ungültig, dass X t ist. Einige Kombinationen sind nicht auf allen Systemen implementiert; zum Beispiel wird B nicht auf alle Systeme unterstützt. Wenn eine ungültige oder nicht unterstützte Kombination von XY angegeben ist, führt dies zu einem schwerwiegenden Fehler. Zeitangaben werden wie für das Argument der Option -d des GNU-Datums interpretiert. Wenn Sie versuchen, die Geburtszeit einer Referenzdatei zu verwenden, und die Geburtszeit kann nicht bestimmt werden, führt eine schwerwiegende Fehlermeldung. Wenn Sie einen Test angeben, der sich auf die Geburtszeit von Dateien bezieht, die betrifft, schlägt dieser Test für alle Dateien fehl, bei denen die Geburtszeit unbekannt ist.

Wenn Sie an Ihrem Skript bleiben möchten, ändern Sie einfach das Format für den ls Befehl. Sie verwenden derzeit --time-style=+%d%m%y, wenn Sie wahrscheinlich möchten --time-style=+%y%m%d (benötigt den gleichen Stil wie ein Parameter oder ein Schalter in Ihrem Skript).

+1

Danke Mann, das hat wirklich funktioniert –