GNU/Linux >> Tutoriels Linux >  >> Linux

Copier une plage de fichiers en ligne de commande (ZSH/BASH)

Solution 1 :

Tu étais très proche. Votre question était presque la bonne syntaxe :

cp P10802{75..83}.JPG ~/Images

Solution 2 :

Pour itérer sur une plage dans bash :

for x in {0..10}; do echo $x; done

Appliquer la même chose dans votre cas :

for x in {272..283}; do cp P1080$x.JPG ~/Images; done

Solution 3 :

Zsh, avec l'option extendedglob a le globbing opérateur (correspondance de modèle).

setopt extendedglob
echo P10802<75-83>.JPG

correspondra aux noms de fichiers du répertoire actuel qui correspondent à ce modèle (attention, P1080275.JPG correspond, mais P108020000000075.JPG également)

À l'autre extrémité, l'opérateur d'expansion de chaîne {x...y} (pris en charge par zsh et les versions récentes de bash et ksh93), s'étend aux chaînes de x à y, quels que soient les fichiers présents dans le répertoire actuel.

cp P10802<75-83>.JPG ~there

copiera les fichiers correspondants, de même

cp P10802{75..83}.JPG ~there

Mais vous obtiendrez des erreurs si, par exemple, P1080281.JPG n'existe pas.


Linux
  1. Copier des fichiers et des répertoires sous Linux

  2. Différence entre " et " sur la ligne de commande (bash) ? ?

  3. Passer les arguments de la ligne de commande au script Bash ?

  4. Commande introuvable dans Zsh, mais trouvée dans Bash ?

  5. 5 Achèvement standard disponible dans la ligne de commande Linux Bash

Comment lire des fichiers ligne par ligne dans Bash

Commande Cp sous Linux (Copier des fichiers)

Comment utiliser la commande cp pour copier des fichiers et des répertoires

Comment afficher l'historique de Bash sans numéros de ligne

Copier un fichier dans plusieurs répertoires à partir de la ligne de commande sous Linux

Copier des fichiers en toute sécurité avec la commande SCP