Opdracht uitvoeren op alle bestanden in een map
Kan iemand mij de code geven om het volgende te doen: Stel, er is een map met bestanden, die allemaal door een programma moeten worden gehaald. Het programma voert de resultaten uit naar standaard out. Ik heb een script nodig dat in een map gaat, het commando uitvoert op elk bestand, en de uitvoer samenvoegt in één groot uitvoerbestand.
Bijvoorbeeld, om het commando uit te voeren op 1 bestand:
$ cmd [option] [filename] > results.out
254
3
De volgende bash-code geeft $file door aan het commando, waarbij $file elk bestand in /dir weergeeft
Voorbeeld
Wat dacht je hiervan:
-maxdepth 1
argument voorkomt dat find recursief afdaalt in subdirectories. (Als u wilt dat dergelijke geneste mappen worden verwerkt, kunt u dit weglaten).-type -f
specificeert dat alleen gewone bestanden worden verwerkt.-exec cmd optie {}
vertelt datcmd
met de opgegevenoptie
voor elk gevonden bestand moet worden uitgevoerd, waarbij de bestandsnaam wordt vervangen door{}
cmd
executies doorgestuurd naarresults.out
Als je echter de volgorde van de bestanden wilt weten, kun je misschien beter af met het schrijven van een lus. Ik denk dat
find
de bestanden verwerkt op volgorde van inode (hoewel ik me daar in kan vergissen), wat misschien niet is wat je wilt.Gebaseerd op @Jim Lewis's aanpak:
Hier is een snelle oplossing met
find
en ook het sorteren van bestanden op hun wijzigingsdatum:Voor sorteren zie:
http://www.commandlinefu.com/commands/view/5720/find-files-and-list-them-sorted-by-modification-time