Forum Programmation.shell Csh nom de fichier

Posté par  .
Étiquettes : aucune
0
5
mar.
2007
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  . Évalué à 2.

    Tu peux nous dire avec quelle commande tu essayes de créer ce fichier. Parce que chez moi, depuis un shell:


    $ cat > fichier.txt-Sun\ Jan\ 21\ 19:42:17\ CET\ 2007
    plop
    ^D
    $ ls -ltr
    -rw-r--r-- 1 plop plop 5 2007-03-05 23:10 fichier.txt-Sun Jan 21 19:42:17 CET 2007
    • [^] # Re: quelle commande

      Posté par  . Évalué à 1.

      J'utilise ça:

      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  . Évalué à 1.

        facile, c'est un probleme avec les espaces,
        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  (site web personnel) . Évalué à 1.

          Pour les espaces on peu aussi rajouter des " autour du nom de fichier:

          cp "$lepathcomplet" "$lepath.sauvegarde/$filename"
          • [^] # Re: quelle commande

            Posté par  . Évalué à 1.

            Je viens de tester mais même problème:

            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  . Évalué à 1.

          Testé aussi mais ça passe pas tjs la même erreur

          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  . Évalué à 1.

            Salut Fabrs,

            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  . Évalué à 1.

        A la troisième ligne, j'aurais plutôt utilisé dirname

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.