Ubuntu (Unix) Dateiauflistung nach Änderungsdatum
Hi Leute, ich habe Probleme einen gewissen Unix-Befehl mit den richtigen Parametern zu finden.
System: Ubuntu 12.04
Ich habe einen Ordner
/home/webdev
In diesem Ordner sind zig Unterordner mit jeweils weiteren Unterordnern (usw.)
Insgesamt befinden sich knapp 15.000 Dateien im webdev (und tiefer)
Ich möchte nun eine Liste (z.B. als Textdatei) die mir alle Dateien auflisten (mit kompletten Pfad)
welche nach einem Datum X geändert wurden. (nicht erstellt sondern geändert)
Aber irgendwie haperts da bei mir.
Also die Ausgabe sollte den Dateinamen (mit kompletten Dateipfad) enthalten, wann sie geändert wurde und die Liste sollte nach Ordner und Namen sortiert sein, so dass man anhand der Liste schön die Ordnerstruktur per Hand durchlaufen kann und die Entsprechenden Dateien sofort findet.
vielen Dank an euch !
System: Ubuntu 12.04
Ich habe einen Ordner
/home/webdev
In diesem Ordner sind zig Unterordner mit jeweils weiteren Unterordnern (usw.)
Insgesamt befinden sich knapp 15.000 Dateien im webdev (und tiefer)
Ich möchte nun eine Liste (z.B. als Textdatei) die mir alle Dateien auflisten (mit kompletten Pfad)
welche nach einem Datum X geändert wurden. (nicht erstellt sondern geändert)
Aber irgendwie haperts da bei mir.
Also die Ausgabe sollte den Dateinamen (mit kompletten Dateipfad) enthalten, wann sie geändert wurde und die Liste sollte nach Ordner und Namen sortiert sein, so dass man anhand der Liste schön die Ordnerstruktur per Hand durchlaufen kann und die Entsprechenden Dateien sofort findet.
vielen Dank an euch !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 185302
Url: https://administrator.de/contentid/185302
Ausgedruckt am: 25.11.2024 um 01:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo ,
das riecht nach find.
Also als Bspl. find /dein/pfad -type f -mtime 0 > deinedatei.txt
findet alle geanderten Dateien der letzten 48 std. und lenkt das Ergebnis in deinedatei.txt.
Hier mal ein Paar Examples
Find everything in your home directory modified in the last 24 hours:
find $HOME -mtime -1
Find everything in your home directory modified in the last 30 min
find $HOME -mmin -30
Find files in your home directory that were NOT been modified a year or more:
find $HOME -mtime +365
man find ist dein Freund
Sortiert wird automatisch, moechtest Du aber bestimmten sort option nutzen musst du den Krempel pipen.
find /dein/pfad -type f -mtime 0 | sort -f > deinedatei.txt
man sort zeigt Dir alle Optionen dazu an ..
Gruss
das riecht nach find.
Also als Bspl. find /dein/pfad -type f -mtime 0 > deinedatei.txt
findet alle geanderten Dateien der letzten 48 std. und lenkt das Ergebnis in deinedatei.txt.
Hier mal ein Paar Examples
Find everything in your home directory modified in the last 24 hours:
find $HOME -mtime -1
Find everything in your home directory modified in the last 30 min
find $HOME -mmin -30
Find files in your home directory that were NOT been modified a year or more:
find $HOME -mtime +365
man find ist dein Freund
Sortiert wird automatisch, moechtest Du aber bestimmten sort option nutzen musst du den Krempel pipen.
find /dein/pfad -type f -mtime 0 | sort -f > deinedatei.txt
man sort zeigt Dir alle Optionen dazu an ..
Gruss
Hallo
Also SO ist die Unterscheidung zwischen Creationtime und Changetime nicht feststellbar.
Zeitstempel von Dateien - (inupedia.org)
Zudem ist zu bedenken das es die Creationtime erst mit neuen Dateisystemen gibt - soweit ich weiß. Ext4 kann dies bereits nur hängt die sonstige Software hinterher ! Weder mein Nautilus, noch
How to get firle creation time - (linuxquestions.org)
Aber frage mich jetzt nicht wie ich das in eine sortierte Liste bekomme !
~Arano
arano@debian:~$ ls | grep arano
arano@debian:~$ touch arano
arano@debian:~$ ls | grep arano
-rw-r--r-- 1 arano arano 0 22. Mai 16:26 arano
arano@debian:~$ stat ./arano
File: „./arano“
Size: 0 Blocks: 0 IO Block: 4096 reguläre leere Datei
Device: 900h/2304d Inode: 6688420 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ arano) Gid: ( 1000/ arano)
Access: 2012-05-22 16:26:43.104153778 +0200
Modify: 2012-05-22 16:26:43.104153778 +0200
Change: 2012-05-22 16:26:43.104153778 +0200
arano@debian:~$
arano@debian:~$
arano@debian:~$
arano@debian:~$ touch arano
arano@debian:~$ ls -l | grep arano
-rw-r--r-- 1 arano arano 0 22. Mai 16:29 arano
arano@debian:~$ stat ./arano
File: „./arano“
Size: 0 Blocks: 0 IO Block: 4096 reguläre leere Datei
Device: 900h/2304d Inode: 6688420 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ arano) Gid: ( 1000/ arano)
Access: 2012-05-22 16:29:57.992157237 +0200
Modify: 2012-05-22 16:29:57.992157237 +0200
Change: 2012-05-22 16:29:57.992157237 +0200
arano@debian:~$
Zeitstempel von Dateien - (inupedia.org)
Zudem ist zu bedenken das es die Creationtime erst mit neuen Dateisystemen gibt - soweit ich weiß. Ext4 kann dies bereits nur hängt die sonstige Software hinterher ! Weder mein Nautilus, noch
ls
oder find
bieten entsprechenden OptionenHow to get firle creation time - (linuxquestions.org)
arano@debian:~$ sudo debugfs -R 'stat <6688420>' /dev/md0
debugfs 1.41.12 (17-May-2010)
Inode: 6688420 Type: regular Mode: 0644 Flags: 0x80000
Generation: 536187346 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 0
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012
atime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012
mtime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012
crtime: 0x4fbba223:18d50ac8 -- Tue May 22 16:26:43 2012
Size of extra inode fields: 28
EXTENTS:
arano@debian:~$
Aber frage mich jetzt nicht wie ich das in eine sortierte Liste bekomme !
~Arano
Guten Abend,
machen. Dabei kannst Du überlegen, ob Du mit awk nach dem Datum sortieren lässt. Allerdings möchtest Du ja eine Sortierung nach Ordnern.
Markus
Zitat von @Boingboing:
...
Also die Ausgabe sollte den Dateinamen (mit kompletten Dateipfad) enthalten, wann sie geändert wurde und die Liste sollte
nach Ordner und Namen sortiert sein, so dass man anhand der Liste schön die Ordnerstruktur per Hand durchlaufen kann und die
ich würde das mit ...
Also die Ausgabe sollte den Dateinamen (mit kompletten Dateipfad) enthalten, wann sie geändert wurde und die Liste sollte
nach Ordner und Namen sortiert sein, so dass man anhand der Liste schön die Ordnerstruktur per Hand durchlaufen kann und die
du -h --time
Markus
Hallo Arano,
guter Beitrag!
dein ls ueber grep gibt Dir auch die Dateiattribute aus? Braucht ls dafuer nicht die option -l?
Oder hast Du Dir ein Alias gesetzt?
So zum Thema: Du aenderst eine leere Datei! daher findet stat auch keine Aenderungen!
hab ich mal mit nem script getestet.
per copy paste.. weil die stat ausgabe bei mac os fuer nen a.... ist.
File: „./afor1“
Size: 378 Blocks: 8 IO Block: 4096 reguläre Datei
Device: 807h/2055d Inode: 2103246 Links: 1
Access: (0744/-rwxr--r--) Uid: ( 1000/ Alchimedes) Gid: ( 1000/ ich )
Access: 2012-05-22 22:06:10.486208151 +0200
Modify: 2012-02-14 17:16:20.925154513 +0100
Change: 2012-02-14 17:16:20.975153639 +0100
touch afor1
File: „./afor1“
Size: 378 Blocks: 8 IO Block: 4096 reguläre Datei
Device: 807h/2055d Inode: 2103246 Links: 1
Access: (0744/-rwxr--r--) Uid: ( 1000/ Alchimedes) Gid: ( 1000/ ich)
Access: 2012-05-22 22:06:10.486208151 +0200
Modify: 2012-02-14 17:16:20.925154513 +0100
Change: 2012-05-22 22:08:42.277458445 +0200 <--
Gruss
guter Beitrag!
dein ls ueber grep gibt Dir auch die Dateiattribute aus? Braucht ls dafuer nicht die option -l?
Oder hast Du Dir ein Alias gesetzt?
So zum Thema: Du aenderst eine leere Datei! daher findet stat auch keine Aenderungen!
hab ich mal mit nem script getestet.
per copy paste.. weil die stat ausgabe bei mac os fuer nen a.... ist.
File: „./afor1“
Size: 378 Blocks: 8 IO Block: 4096 reguläre Datei
Device: 807h/2055d Inode: 2103246 Links: 1
Access: (0744/-rwxr--r--) Uid: ( 1000/ Alchimedes) Gid: ( 1000/ ich )
Access: 2012-05-22 22:06:10.486208151 +0200
Modify: 2012-02-14 17:16:20.925154513 +0100
Change: 2012-02-14 17:16:20.975153639 +0100
touch afor1
File: „./afor1“
Size: 378 Blocks: 8 IO Block: 4096 reguläre Datei
Device: 807h/2055d Inode: 2103246 Links: 1
Access: (0744/-rwxr--r--) Uid: ( 1000/ Alchimedes) Gid: ( 1000/ ich)
Access: 2012-05-22 22:06:10.486208151 +0200
Modify: 2012-02-14 17:16:20.925154513 +0100
Change: 2012-05-22 22:08:42.277458445 +0200 <--
Gruss
Hallo Alchimedes
*hehe* Nein, mein
Ich habe das nur versehentlich gelöscht als ich das etwas anschaulicher gestaltet habe. Denn in meinem Beispiel lautet der Dateiname ja wie mein Username, wodurch mir mit dem
Das eigentliche Kommando warAber darüber sollte sich keiner Gedanken machen - sollte ^^
Naja,
Egal, im ganzen wollte ich ja nur aufzeigen, das die ctime, wie oft geglaubt (mich eingeschlossen), nicht die "Erstellungszeit", sondern die Changeteime !
Denn der Fragesteller wollte ja nur die geänderten Dateien, die neu erstellten ausgeschlossen.
~Arano
*hehe* Nein, mein
ls
gibt mir auch erst mit der Option "-l" die Dateiattribute aus.Ich habe das nur versehentlich gelöscht als ich das etwas anschaulicher gestaltet habe. Denn in meinem Beispiel lautet der Dateiname ja wie mein Username, wodurch mir mit dem
grep
ALLE meine Dateien im Homer-Verzeichnis angezeigt wurden bzw. keine Datei ausgefiltert werden konnten.Das eigentliche Kommando war
ls -l | grep " arano$"
Naja,
stat
liest doch auch nur die informationen aus dem Dateisystem aus und tut nichts vergleichen.Egal, im ganzen wollte ich ja nur aufzeigen, das die ctime, wie oft geglaubt (mich eingeschlossen), nicht die "Erstellungszeit", sondern die Changeteime !
Denn der Fragesteller wollte ja nur die geänderten Dateien, die neu erstellten ausgeschlossen.
~Arano
Guten Morgen allerseits
Auch find unterscheidet zwischen accesstime und "last change of status".
Ach ja, und hier in der Manpage zu ls finde ich, das es auch die verschiedenen Zeiten unterscheidet
Markus
Zitat von @Arano:
Egal, im ganzen wollte ich ja nur aufzeigen, das die ctime, wie oft geglaubt (mich eingeschlossen), nicht die
"Erstellungszeit", sondern die Changeteime !
Denn der Fragesteller wollte ja nur die geänderten Dateien, die neu erstellten ausgeschlossen.
wenn man du benutzt, dann kann man zwischen verschiedenen Zeiten unterscheiden, hier der Abschnitt der Manpage zu duEgal, im ganzen wollte ich ja nur aufzeigen, das die ctime, wie oft geglaubt (mich eingeschlossen), nicht die
"Erstellungszeit", sondern die Changeteime !
Denn der Fragesteller wollte ja nur die geänderten Dateien, die neu erstellten ausgeschlossen.
Zitat aus "man du"
--time=WORD
show time as WORD instead of modification time: atime, access, use, ctime or status
Ach ja, und hier in der Manpage zu ls finde ich, das es auch die verschiedenen Zeiten unterscheidet
Zitat aus "man ls"
--time=WORD
with -l, show time as WORD instead of modification time: atime -u, access -u, use
-u, ctime -c, or status -c; use specified time as sort key if --sort=time
Moin Boingboing,
nachdem Du nun beschrieben hast, was Du eigentlich willst, kannst Du das mal lesen. Es geht dort, kurz gesagt, um Hardlinks aktualisierter Dateien und Verzeichnisse auf eine Hauptsicherung - das Ganze mit
Viel Erfolg und freundliche Grüße von der Insel - Mario
nachdem Du nun beschrieben hast, was Du eigentlich willst, kannst Du das mal lesen. Es geht dort, kurz gesagt, um Hardlinks aktualisierter Dateien und Verzeichnisse auf eine Hauptsicherung - das Ganze mit
'rsync'
und 'cp'
. Mit 'rsync'
allein kommst Du nicht zum Ziel, da die '--times'
-Parameter nur bei bereits vorhandenem Zielverzeichnis greifen.Viel Erfolg und freundliche Grüße von der Insel - Mario
Hi,
achso, dann sollte dir ja ein
Das kannst du dann z.B. in eine Datei umleiten lassen und hast
~Arano
achso, dann sollte dir ja ein
find /projektX -ctime X
reichen.Das kannst du dann z.B. in eine Datei umleiten lassen und hast
- Ein kleines "Updatelog" und
- Kannst du diese Liste zum erstellen des Archives verwenden z.B.
tar -cf upd.tar --create-from-file=/upd.lst
Naja, so ungefähr jedemfalls, habe die genaue Option jetzt nicht im Kopf.
~Arano
Oh ohhh... oO
Hi,
mir fällt da gerade etwa ein, etwas wichtiges !
Das funktioniert so zwar wunderbar und macht auch einen guten Eindruck ABER... so fällt Datenmüll an !
Mit dieser Methode können logischerweise nur die Dateien Beachtung finden, die auch existieren. Was ist aber mit denen die schön gelöscht wurden, weil sie z.B. nicht mehr gebraucht werden oder zwei ähnliche Dateien zu einer neuen Zusammengelegt wurden.
Diese kann
Diese
Das schiebe ich schon seit Monaten vor mich her...
Schönes Wochenende
~Arano
Hi,
mir fällt da gerade etwa ein, etwas wichtiges !
Das funktioniert so zwar wunderbar und macht auch einen guten Eindruck ABER... so fällt Datenmüll an !
Mit dieser Methode können logischerweise nur die Dateien Beachtung finden, die auch existieren. Was ist aber mit denen die schön gelöscht wurden, weil sie z.B. nicht mehr gebraucht werden oder zwei ähnliche Dateien zu einer neuen Zusammengelegt wurden.
Diese kann
find
dir natürlich nicht auflisten, und mit einem vermeidlichem Update werden ja auch nur Dateien von "testing" zu "stabel" kopiert - gelöscht wird nirgends !Diese
find | tar
Kombination benutze ich für mein Systembackup. Hier kann ich allerdings monatlich nach dem Vollbackup die "vollbackup.liste" mit dem aktuellem Filesystem abgleichen und eine Differenzliste erstellen lassen diff
nach der "aufgeräumt" werden kann (könnte).Das schiebe ich schon seit Monaten vor mich her...
Schönes Wochenende
~Arano