Allt från Computex 2023

Lista (fil) med filnamn som input till komando?

Permalänk
Medlem

Lista (fil) med filnamn som input till komando?

Jag har fil med en massa filnamn som ser ut såhär:

aaa.txt aab.txt aac.txt abc.txt abb.txt

sen har jag ett kommando som jag vill köra för varje filnamn.
Typ såhär:

./kommando aaa.txt
./kommando aab.txt
./kommando aac.txt
osv...

För varje rad i filen vill jag att kommandot ska köras med raden som argument.
Finns det nåt sätt att automatisera detta?

Permalänk
Medlem

kanske

find -print0 -name aa?.txt|xargs -0 ./kommando

Permalänk
Medlem

bashscript som loopar igenom alla filer du har i katalogen

bash: www.tldp.org/LDP/abs/html/

Visa signatur

peter@server ~ $ uptime
22:26:14 up 30 days, 21:28, 4 users, load average: 21.77, 42.33, 26.94

Permalänk

Python:

#!/usr/bin/env python from commands import getoutput for file in open('fil.txt').readlines(): print getoutput('kommando "' + file[:-1] + '"')

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av KRATER
kanske

find -print0 -name aa?.txt|xargs -0 ./kommando

Nu funkar det med
more filenames.txt | xargs ./kommando

fast outputen från programmet blir konstigt :/

Permalänk
Medlem

Varför inte:

for i in `cat filnamnlista`; do ./kommando "$i" done

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk

Undrar om inte ovanstående missat lite av vad frågan handlade om. Så här tolkar jag en möjlig lösning:

for i in ${cat filnamn}; do kommando "$i"; done

där "filnamn" är namnet på filen som innehåller aaa.txt, aab.txt, osv.

edit: GunnarD hann före, men jag låter mitt stå kvar ändå

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av GunnarD
Varför inte:

for i in `cat filnamnlista`; do ./kommando "$i" done

EDIT: Aah, nu funkar det..., jag skrev av fel
Men utskriften från programmet blir konstigt. Det ska vara flera rader, men den skriver bara ut första

Det blir exakt samma reslutat som om jag skriver
more filenames.txt | xargs ./kommando

Permalänk

Har du någon magic-rad först?

typ:

#!/bin/bash

eller vilken sökväg du nu har.

#!/bin/sh

funkar också

Permalänk
Medlem

Gjorde ett litet javaprogram som skriver ut innehållet i en fil, när jag använder det istället för more så blir utskriften från ./kommando flerradig. Jättekonstigt, men det funkar iallafall.
Så här skriver jag:
java Print filenames.txt | xargs ./kommando

import java.io.*; public class Print { public static void main(String[] args) throws Exception{ java.io.BufferedReader f = new java.io.BufferedReader(new java.io.FileReader(args[0])); try { String s = f.readLine(); while(s != null) { System.out.println(s); s = f.readLine(); } } catch (Exception e) {} } }

Tack alla för hjälpen

Permalänk

Använda Java för en enkel skriptningsuppgift? Kör detta i stället:

cat fil | while read rader do kommando $rader done