Bonjour à tous,
Je dois créer une copie d'un fichier "fichier.txt" qui aurait le nom suivant "fichier.txt-Sun Jan 21 19:42:17 CET 2007"
mais lorsque je crée cette copie avec ce nom , j'obtiens l'erreur cannot copy regular file .... invalid argument.
Par contre "fichier.txt-Sun Jan 21" ça passe
Quelqu'un peut il me dire ce qui ne fonctionne pas ?
D'avance merci
# quelle commande
Posté par left . Évalué à 2.
[^] # Re: quelle commande
Posté par fabrs . Évalué à 1.
set lefichier = `basename $lepathcomplet`
# enleve $lefichier de $lepathcomplet pour obtenir le path
set lepath=`echo $lepathcomplet | sed s/$lefichier//g`
#crée mon nom de fichier concaténé avec la date
set filename = "$lefichier-`date -u`"
#copie de l'original ds un rep .sauvegarde
cp $lepathcomplet "$lepath.sauvegarde/$filename"
[^] # Re: quelle commande
Posté par NeoX . Évalué à 1.
perso j'aime pas les espaces dans les noms de fichiers (surement un vieux reflexe)
aussi je ferais
datefile=`date -u | sed s/\ /_/g` ### je remplace les espaces par des _
filename="$lefichier-$datefile"
[^] # Re: quelle commande
Posté par sylvain cresto (site web personnel) . Évalué à 1.
cp "$lepathcomplet" "$lepath.sauvegarde/$filename"
[^] # Re: quelle commande
Posté par fabrs . Évalué à 1.
cp:cannot create regular file 'rep1/rep21/.sauvegarde/f1.txt-Tue Mar 6 21:26:23 UTC 2007': Invalid argument
[^] # Re: quelle commande
Posté par fabrs . Évalué à 1.
Ce n'est pas un problème de taille car j'ai essayé en dur le nom suivant 611111111111111111111111111111111111111111111111111111111111111 et ça fonctionne, donc il y aurait une allergie avec les dates et heures ?
J'utilise le c-shell c'est possible que ça explique qqch ?
[^] # Re: quelle commande
Posté par By ZeB . Évalué à 1.
Non ca ne peut pas venir de la longeur du nom de fichier. Le problème est que les noms de fichiers contenant des espaces n'est pas bien digéré par unix. Tu as 2 possiblités :
1. Soit tu échappes chaques espaces par un backslash
2. Tu renommes ton fichier avec une date préformatée. La commande date prends des arguments. man date devrait t'aider mais une piste est maDate=`date +Y+M+d+H+mm+ss` ou un truc du genre.
[^] # Re: quelle commande
Posté par noctisLab . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.