2017-05-07 1 views
2

find . -iname "*.txt" -exec program '{}' \; | sed 's/Value= //'linux trouver plus d'un exec

- « programme » retourne une valeur différente pour chaque fichier, et la sortie est préfixé avec "Value= "

Dans ce temps, la sortie sera "Value= 128" et après sed juste 128.

Comment puis-je prendre la valeur "128" et que le fichier d'entrée renommé en 128 txt mais aussi trouver ce run pensé plusieurs fichiers.

Désolé pour les mauvaises descriptions. Je vais essayer d'effacer si nécessaire

Répondre

0

d'abord écrire un script shell capable de renommer un argument:

mv "$1" "$(program "$1" | sed "s/Value= //").txt" 

Puis embed qui script dans votre commande find:

find . -iname "*.txt" \ 
    -exec sh -c 'mv "$1" "$(program "$1" | sed "s/Value= //").txt"' _ {} \;