Utfør kommando på alle filer i en katalog
Kan noen vennligst oppgi koden for å gjøre følgende: Anta at det er en katalog med filer, som alle må kjøres gjennom et program. Programmet sender ut resultatene til standard ut. Jeg trenger et skript som vil gå inn i en katalog, utføre kommandoen på hver fil og koble utdataene til en stor utdatafil.
For eksempel for å kjøre kommandoen på 1 fil:
$ cmd [option] [filename] > results.out
254
3
Følgende bash-kode vil sende $file til kommandoen der $file vil representere hver fil i /dir
Eksempel
Hva med dette?
-maxdepth 1
-argumentet forhindrer rekursivt søk i å stige ned i noen underkataloger. (Hvis du vil at slike nestede kataloger skal behandles, kan du utelate dette).-type -f
angir at bare vanlige filer skal behandles.-exec cmd option {}
forteller den at den skal kjørecmd
med den angitteoption
for hver fil som blir funnet, med filnavnet erstattet av{}
.\;
angir slutten på kommandoen.cmd
-kjøringene tilresults.out
.Men hvis du bryr deg om rekkefølgen filene behandles i, er det kanskje bedre å skrive en løkke. kan det være bedre å skrive en løkke. Jeg tror
find
behandler filene i inode rekkefølge (selv om jeg kan ta feil om det), noe som kanskje ikke er hva du ønsker.Basert på @Jim Lewis' tilnærming:
Her er en rask løsning ved hjelp av
find
og også sortering av filer etter endringsdato:For sortering se:
http://www.commandlinefu.com/commands/view/5720/find-files-and-list-them-sorted-by-modification-time