web-dev-qa-db-fra.com

Copier tous les fichiers d'une certaine extension de type de fichier dans un script

J'essaie d'exécuter la commande suivante dans un script Shell où adir="mydir" et extType=*.txt

cp "$adir/$extType" "$destination"

Cependant je reçois:

cp: cannot stat ‘mydir/*.txt’: No such file or directory

mais il y a un tel répertoire et si je l'exécute manuellement en ligne de commande, cela fonctionne.

Des idées ce qui ne va pas?

3
Jocky Doe

Vous devez remplacer "$adir/$extType" par "$adir/"$extType sinon l’expansion globale n’aura pas lieu et il recherchera un fichier portant exactement le nom de *.txt qui ne peut pas être trouvé et se plaint à ce sujet. :

cp: cannot stat ‘mydir/*.txt’: No such file or directory
7
Ravexina

Ravexina a déjà bien souligné que la sélection ne fonctionnait pas entre guillemets simples ou doubles, et que la syntaxe cp était fausse pour plusieurs fichiers/destination unique et nécessitait le drapeau -t.

Ce que vous pourriez faire comme alternative est d’utiliser des tableaux bash:

extType=( "$adir"/*.txt )
cp -t "$destination"   "${extType[@]}" 

Alternativement, boucle

for i in "$adir"/*.txt ; do cp "$i"  "$destination"; done
2