GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verzeichnis aus Dateiname erstellen und Bash verschieben

Um = sind keine Leerzeichen erlaubt in einer Aufgabe.

dir="${file%%.*}"

Umgekehrt sind Leerzeichen erforderlich im Test.

if [ -e $dir ]; then
    ^       ^

Was stilistische Verbesserungen betrifft, schadet es nicht, unnötige mkdir -p zu machen , damit Sie die if loswerden können Aussage.

Anführungszeichen sind in einer Aufgabe nicht erforderlich, daher können Sie sie aus dir= entfernen Linie. Zitieren ist jedoch überall sonst eine gute Idee, also löschen Sie nicht die anderen Anführungszeichen.

Es könnte gut sein, ein zusätzliches .* hinzuzufügen zur for-Schleife. Wenn Sie das Skript mehr als einmal ausführen, versucht es auf diese Weise nicht, diese neu erstellten Unterverzeichnisse zu verschieben. Und ein netter Trick (wenn auch nicht unbedingt eine Verbesserung) besteht darin, BR*.* W0*.* zu kürzen bis {BR,W0}*.* .

for file in {BR,W0}*.*; do
    dir=${file%%.*}
    mkdir -p "$dir"
    mv "$file" "$dir"
done

Linux
  1. Wie verschiebt man alle Dateien (einschließlich versteckter) von einem Verzeichnis in ein anderes?

  2. Vollständigen Pfad aus Bash-Skript abrufen?

  3. 6 mv-Befehlsbeispiele zum Verschieben oder Umbenennen von Linux-Dateien und -Verzeichnissen

  4. Erstellen und Entfernen von Dateien und Verzeichnissen unter Linux

  5. Erstellen eines neuen Verzeichnisses in C

Entfernen Sie alle Sonderzeichen und Groß-/Kleinschreibung aus der Zeichenfolge in Bash

Erstellen von Klassen und Objekten mit Bash-Scripting

Linux Bash:Verschieben Sie mehrere verschiedene Dateien in dasselbe Verzeichnis

Exportieren Sie eine Variable aus Bash und verwenden Sie sie in Python

Verhindern, dass 10.2 das Wolfram Mathematica-Verzeichnis unter Linux erstellt

Wie verschiebt man alle Dateien vom aktuellen Verzeichnis in das obere Verzeichnis?