GNU/Linux >> Tutoriels Linux >  >> Linux

Ajout d'horodatage à un nom de fichier avec mv dans BASH

Les quelques lignes que vous avez postées à partir de votre script me semblent correctes. C'est probablement quelque chose d'un peu plus profond.

Vous devez trouver quelle ligne vous donne cette erreur. Ajouter set -xv en haut de votre script. Cela imprimera le numéro de ligne et la commande en cours d'exécution sur STDERR . Cela vous aidera à identifier où dans votre script vous obtenez cette erreur particulière.

BTW, avez-vous un shebang en haut de votre script ? Quand je vois quelque chose comme ça, je m'attends normalement à ce que ce soit un problème avec le Shebang. Par exemple, si vous aviez #! /bin/bash en haut, mais votre interpréteur bash est situé dans /usr/bin/bash , vous verrez cette erreur.

MODIFIER

Nouvelle question :comment puis-je enregistrer le fichier correctement en premier lieu, pour éviter d'avoir à effectuer ce correctif à chaque fois que je renvoie le fichier ?

Deux manières :

  1. Sélectionnez Modifier->Conversion EOL->Format Unix élément de menu lorsque vous modifiez un fichier. Une fois qu'il a les fins de ligne correctes, Notepad++ les conservera.
  2. Pour vous assurer que tous les nouveaux fichiers ont les fins de ligne correctes, accédez aux Paramètres->Préférences élément de menu, et ouvrez les Préférences boite de dialogue. Sélectionnez le Nouveau document/répertoire par défaut languette. Sous Nouveau document et Formater , sélectionnez le Unix bouton radio. Cliquez sur Fermer bouton.

J'utilise cette commande pour faire simplement pivoter un fichier :

mv output.log `date +%F`-output.log

Dans le dossier local, j'ai 2019-09-25-output.log


mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log

Une méthode à une seule ligne dans bash fonctionne comme ceci.

[une sortie]>$(date "+%Y.%m.%d-%H.%M.%S").ver

créera un fichier avec un nom d'horodatage avec l'extension ver. Un instantané de liste de fichiers de travail vers un nom de fichier d'horodatage comme suit peut montrer qu'il fonctionne.

find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

Bien sûr

cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

ou encore plus simple

ls > $(date "+%Y.%m.%d-%H.%M.%S").ver


Linux
  1. La fête ?

  2. Bash -c avec des paramètres positionnels ?

  3. Renommer en masse le fichier Bash avec compteur ?

  4. Lecture de lignes à partir d'un fichier avec Bash :pour Vs. Tandis que?

  5. Avertissement avec nftw

Bash :Écrire dans un fichier

Commande de source bash

Bash :ajouter au fichier

35 exemples de scripts bash

La redirection bash expliquée avec des exemples

texte d'écho avec une nouvelle ligne dans bash