Sichern Sie ein Programmierverzeichnis

Sichern Sie ein Programmierverzeichnis

Ich habe ein Verzeichnis mit vielen kompilierten C-Programmen, die ich sichern möchte. Momentan haben sie die Namen, program.outaber ich möchte das gerne in nur ändern program.

Wäre es trotzdem möglich, diese auszuschließen? Und welche Art von regulärem Ausdruck würde ich verwenden, um sie alle schnell umzubenennen?

Antwort1

Verwenden Sie zum Sichern Ihres Codes Git oder eine andere Versionskontrollsoftware. Im Internet gibt es viele Möglichkeiten, um nur einige zu nennen: GitHub, Bitbucket.

In Git haben Sie die Datei .gitignore. Wenn Sie dort *.out hinzufügen, wird sie nicht in das Repository übertragen.

Antwort2

program.outIhre erste Frage ist mir nicht ganz klar. Wenn Sie umbenennen möchten, programführen Sie einfach Folgendes aus:

mv program{.out,}

Zur zweiten Frage und angenommen, ich möchte eine Liste von Dateien /etcmit einem Suffix erhalten:

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

Die oben genannten Angaben können Sie nach Bedarf anpassen.

  • \.entspricht einem wörtlichen Punkt.
  • .passt zu jedem Zeichen nach dem Punkt.
  • +besagt, dass auf den ersten Punkt mindestens ein Zeichen folgen muss. Dies entspricht also test.c, aber nicht . Wenn Sie auch test.eine Übereinstimmung wünschen , ändern Sie das in ein .test.+*

Antwort3

Wenn Sie Bash als Shell verwenden, ist dies eine einfache Aufgabe für eine Shell-Pipeline.

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

lserstellt eine Liste der Dateien im Verzeichnis.

grep '\.out$'extrahiert die Dateinamen, die auf .out enden und verwirft den Rest.

while read fileliest die Dateinamen einzeln.

echo mv "$file" "${file%.*}"zeigt einen MV-Befehl an, der jede Datei in eine Version ohne Erweiterung umbenennen würde, führt ihn aber nicht aus. Das ${file%.*}Problem ist die Bash-Syntax zum Entfernen einer Dateierweiterung. Wenn Sie davon überzeugt sind, dass die Pipeline das gewünschte Ergebnis erzielen würde, wenn sie tatsächlich ausgeführt würde, entfernen Sie den echoTeil und lassen Sie sie tatsächlich ausführen.

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

verwandte Informationen