7
votes

Sous Linux, comment copier tous les fichiers ne commençant pas par une chaîne donnée?

J'ai essayé avec la commande suivante: xxx

Toutefois, cette commande copiera tous les fichiers qui ne commencent par aucun des caractères ',' T '"," ',' I ',' n ',' g 'au lieu de copier des fichiers qui ne commencent pas avec "string".


1 commentaires

4 Réponses :


3
votes
ls src_folder | grep -v '^String' | xargs -J % -n1 cp % dest_folder
This will
list all files in src_folder
filter out all those that start with String (so that the rest remains)
Invoke the cp command

once for each of those files (-n1 says to call cp for each of them separately)
using, as its arguments, % dest_folder, where % is replaced by the actual file name.


2 commentaires

Mon Xargs (test Debian) n'a pas d'option -j . Voulez-vous dire -i ?


@MaxElt: J'utilise la version BSD de OS X. Option -i quelque chose d'autre. Il naît que toutes les distributions ont des commutateurs différents sur leurs outils POSIX. :-( Voilà pour la normalisation.



1
votes
cp src_folder/!(String*) dest_folder
Try that
~ Chris

2 commentaires

Je reçois un message d'erreur: Erreur de syntaxe près de jeton inattendu `('


Pour une raison quelconque que l'on travaille pour moi. Essayez la commande que Ignacio posté (ajustée dans ma réponse ci-dessus - vous n'avez pas besoin du shopt -s extglob)



5
votes

in Bash: xxx


1 commentaires

@JOEL: Permet un globbing prolongé dans Bash.



15
votes

une variation de la réponse konrad, en utilisant cp code> option -t code> pour spécifier le répertoire cible simplifie la dernière commande. Il crée un seul processus cp code> pour copier tous les fichiers.

ls src_folder | grep -v '^String' | xargs cp -t dest_folder
  • répertoriez tous les fichiers dans SRC_Folder CODE> LI>
  • Filtrez tous ceux qui commencent par String CODE> LI>
  • Copiez tous les fichiers restants vers DEST_DIR CODE> LI> ul> p>


0 commentaires