Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ubuntu (Unix) Dateiauflistung nach Änderungsdatum

Frage Linux Ubuntu

Mitglied: Boingboing

Boingboing (Level 1) - Jetzt verbinden

22.05.2012, aktualisiert 12:50 Uhr, 8972 Aufrufe, 15 Kommentare

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 !





Mitglied: Cthluhu
22.05.2012 um 13:00 Uhr
Hallo,

Hast du schon den Befehl "find" versucht? Da gibt es einige parameter atime, mtime, ctime, cmin,... welche sich sicher an deine Bedürfnisse anpassen lassen.

Mit freundlichen Grüßen

Cthluhu
Bitte warten ..
Mitglied: Alchimedes
22.05.2012, aktualisiert um 13:16 Uhr
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
Bitte warten ..
Mitglied: Boingboing
22.05.2012 um 14:09 Uhr
dank euch zwei vielmals ^^
werd es nachher mal genau ausprobieren
Bitte warten ..
Mitglied: Arano
22.05.2012, aktualisiert um 16:45 Uhr
Hallo

01.
arano@debian:~$ ls | grep arano 
02.
arano@debian:~$ touch arano 
03.
arano@debian:~$ ls | grep arano 
04.
-rw-r--r--  1 arano arano         0 22. Mai 16:26 arano 
05.
arano@debian:~$ stat ./arano 
06.
  File: „./arano“ 
07.
  Size: 0         	Blocks: 0          IO Block: 4096   reguläre leere Datei 
08.
Device: 900h/2304d	Inode: 6688420     Links: 1 
09.
Access: (0644/-rw-r--r--)  Uid: ( 1000/   arano)   Gid: ( 1000/   arano) 
10.
Access: 2012-05-22 16:26:43.104153778 +0200 
11.
Modify: 2012-05-22 16:26:43.104153778 +0200 
12.
Change: 2012-05-22 16:26:43.104153778 +0200 
13.
arano@debian:~$  
14.
arano@debian:~$  
15.
arano@debian:~$  
16.
arano@debian:~$ touch arano 
17.
arano@debian:~$ ls -l | grep arano 
18.
-rw-r--r--  1 arano arano         0 22. Mai 16:29 arano 
19.
arano@debian:~$ stat ./arano 
20.
  File: „./arano“ 
21.
  Size: 0         	Blocks: 0          IO Block: 4096   reguläre leere Datei 
22.
Device: 900h/2304d	Inode: 6688420     Links: 1 
23.
Access: (0644/-rw-r--r--)  Uid: ( 1000/   arano)   Gid: ( 1000/   arano) 
24.
Access: 2012-05-22 16:29:57.992157237 +0200 
25.
Modify: 2012-05-22 16:29:57.992157237 +0200 
26.
Change: 2012-05-22 16:29:57.992157237 +0200 
27.
arano@debian:~$ 
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 ls oder find bieten entsprechenden Optionen
How to get firle creation time - (linuxquestions.org)
01.
arano@debian:~$ sudo debugfs -R 'stat <6688420>' /dev/md0 
02.
debugfs 1.41.12 (17-May-2010) 
03.
Inode: 6688420   Type: regular    Mode:  0644   Flags: 0x80000 
04.
Generation: 536187346    Version: 0x00000000:00000001 
05.
User:  1000   Group:  1000   Size: 0 
06.
File ACL: 0    Directory ACL: 0 
07.
Links: 1   Blockcount: 0 
08.
Fragment:  Address: 0    Number: 0    Size: 0 
09.
 ctime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012 
10.
 atime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012 
11.
 mtime: 0x4fbba2e5:ec8c78d4 -- Tue May 22 16:29:57 2012 
12.
crtime: 0x4fbba223:18d50ac8 -- Tue May 22 16:26:43 2012 
13.
Size of extra inode fields: 28 
14.
EXTENTS: 
15.
arano@debian:~$ 
Aber frage mich jetzt nicht wie ich das in eine sortierte Liste bekomme !


~Arano
Bitte warten ..
Mitglied: hmarkus
22.05.2012 um 19:54 Uhr
Guten Abend,
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
du -h --time
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
Bitte warten ..
Mitglied: Alchimedes
22.05.2012 um 22:28 Uhr
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
Bitte warten ..
Mitglied: Arano
23.05.2012 um 07:55 Uhr
Hallo Alchimedes

*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
01.
ls -l | grep " arano$"
Aber darüber sollte sich keiner Gedanken machen - sollte ^^

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
Bitte warten ..
Mitglied: hmarkus
23.05.2012 um 08:14 Uhr
Guten Morgen allerseits
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 du
Zitat aus "man du" 
--time=WORD 
              show time as WORD instead of modification time: atime, access, use, ctime or status
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
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
Markus
Bitte warten ..
Mitglied: Boingboing
23.05.2012 um 08:59 Uhr
Zitat von Arano:
Denn der Fragesteller wollte ja nur die geänderten Dateien, die neu erstellten ausgeschlossen.
~Arano


Oh Verzeihung, ich glaube da habe ich mich falsch ausgedrückt. Natürlich möchte ich auch die ab dem Zeitpunkt neuerstellen Dateien mit aufgelistet haben.

Vielleicht sollte ich meine Situation ein wenig mehr erläutern.

Ich habe einen Stagingserver (Ubuntu 12.04 LAMPP) auf dem sich die gespiegelte Entwicklungsumgebung des Livesystems meiner Software befindet.

Z.B auf dem Live-Server läuft die stabile Version 2.0.2 meiner Software die am 18.05.2012 deployed wurde.

So, da ich ja auf der Entwicklungsumgebung schon an der z.B 2.0.3 arbeite, ändern sich da dort die Dateien ab dem 18.05.2012. Wenn ich nun zufrieden bin mit der Arbeit und die 2.0.3 auf das Live-System ausrollen möchte könnte ich nun hergehen und den gesamten Entwicklungsordner nehmen und auf den Live-Server schieben. Das Problem ist, durch die ganzen Bilder und hassu nich gesehen schiebe ich da gut und gerne mal 5 oder 6 GB unnötig durch die Gegend.

Also dachte ich, es gäbe vielleicht ein Befehl welche mir alle ab dem Stichtag (z.B. 18.05.2012) veränderten oder neuerstellten Dateien mit Pfadangabe anzeigt. Dann könnte ich eine Zipdatei mit dem selben Pfadschema erstellen und die "zu patchenden" Dateien dan rein knüppeln.

Auf eine Quellcodeverwaltung ala GIT oder Subversion o.Ä. habe ich bewusst verzichtet, da der Overhead durch die Verwaltung und Pflege nicht im Verhältnis steht für eine Software die von nur zwei (bzw Hauptsächlich mir) entwickelt / gewartet wird.
Bitte warten ..
Mitglied: mak-xxl
23.05.2012, aktualisiert um 09:29 Uhr
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 '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
Bitte warten ..
Mitglied: Arano
23.05.2012 um 09:33 Uhr
Hi,

achso, dann sollte dir ja ein find /projektX -ctime X reichen.
Das kannst du dann z.B. in eine Datei umleiten lassen und hast
  1. Ein kleines "Updatelog" und
  2. 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
Bitte warten ..
Mitglied: Boingboing
23.05.2012 um 09:41 Uhr
Danke Arano, genau DAS habe ich gesucht.
Bitte warten ..
Mitglied: Arano
25.05.2012 um 19:58 Uhr
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 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
Bitte warten ..
Mitglied: Boingboing
26.05.2012, aktualisiert um 09:20 Uhr
Danke Arano für den Hinweis, ich werde mir dann einfach Notizen machen wenn eine Datei nicht mehr benötigt wird, aber um das kam bis jetzt seltener vor.

Bin sehr zufrieden mit dem find Befehl. Bin halt kein Linux Mensch. Entwickelt wird auf Microsoft Produkten. Das Geschäftsumfeld besteht fast ausschließlich aus Microsoftmaschinen, bis halt auf diesen einen Staging LAMPP Server.
Bitte warten ..
Mitglied: Cthluhu
26.05.2012 um 09:26 Uhr
Hi Arano,

Da möchte ich noch anmerken, dass rsync mit der Option "--delete" dazu benutzt werden kann, Dateien aus dem Zielverzeichnis zu entfernen, welche nicht mehr im Quellverzeichnis sind. Mit --exclude können dabei auch Dateien ausgelassen werden.

Mit freundlichen Grüßen

Cthlhu
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Ubuntu
Ubuntu 16.04 LTS friert immer ein (5)

Frage von Moddry zum Thema Ubuntu ...

Linux Tools
gelöst Ubuntu Hardware- und Systemtest (4)

Frage von mike7050 zum Thema Linux Tools ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...