|
|
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''Dateinamen bereinigen''' - Kurzbeschreibung | | '''Dateinamen bereinigen''' - Beschreibung |
|
| |
|
| == Beschreibung == | | == Beschreibung == |
Zeile 7: |
Zeile 7: |
| ! Werkzeug !! Beschreibung | | ! Werkzeug !! Beschreibung |
| |- | | |- |
| | [[detox]] || benennt Dateien um, damit sie leichter zu handhaben sind | | | [[detox]] || Dateien umbenennen, um sie leichter zu handhaben |
| |- | | |- |
| | [[convmv]] || konvertiert den Zeichensatz von Dateinamen | | | [[convmv]] || Zeichensatz von Dateinamen konvertieren |
| |- | | |- |
| | [[fslint]] || Utility to Fix Problems with Filesystems Data | | | [[fslint]] || Behebung von Problemen mit Dateisystemdaten |
| |- | | |- |
| | mv/sed || $ '''mv 'file' $(echo 'file' | sed -e 's/[^A-Za-z0-9._-]/_/g')'''
| | | [[rename]] || |
| |-
| |
| | [[rename]] || | |
| rename 's/[^\x00-\x7F]//g' *
| |
| find . -exec rename 's/[^\x00-\x7F]//g' "{}" \;y
| |
| |-
| |
| | find/perl ||
| |
| find /path/to/files -type f -print0 | \
| |
| perl -n0e '$new = $_; if($new =~ s/[^[:ascii:]]/_/g) {
| |
| print("Renaming $_ to $new\n"); rename($_, $new);
| |
| }'
| |
| |- | | |- |
| | [[bleachbit]] || Unnötige Dateien entfernen, Speicherplatz freigeben und die Privatsphäre wahren | | | [[bleachbit]] || Unnötige Dateien entfernen, Speicherplatz freigeben und die Privatsphäre wahren |
| |} | | |} |
|
| |
|
| == Syntax == | | == Aufruf == |
| <syntaxhighlight lang="bash" highlight="1" line> | | <syntaxhighlight lang="bash" highlight="1" line> |
|
| |
|
Zeile 39: |
Zeile 29: |
|
| |
|
| <noinclude> | | <noinclude> |
| | |
| == Anhang == | | == Anhang == |
| === Siehe auch === | | === Siehe auch === |
| {{Special:PrefixIndex/{{BASEPAGENAME}}}} | | {{Special:PrefixIndex/{{BASEPAGENAME}}}} |
|
| |
|
| ===== Man-Pages ===== | | ===== Man-Page ===== |
| ===== Info-Pages ===== | | ===== Info-Pages ===== |
| ==== Links ==== | | ==== Links ==== |
Zeile 49: |
Zeile 40: |
| ===== Weblinks ===== | | ===== Weblinks ===== |
|
| |
|
| | [[Kategorie:Linux/Datei/Name]] |
| </noinclude> | | </noinclude> |
|
| |
|
| |
| = TMP =
| |
| == Führender Bindestrich ==
| |
| ; Dateien mit führendem Bindestrich
| |
| Einige Linux-Tools erzeugen Dateien mit führendem Bindestrich oder Bindestrich (-) in Dateinamen
| |
| * Oder Ihr handgeschriebenes Programm kann versehentlich Dateinamen erzeugen, die mit einem Minus beginnen
| |
| * Wenn Sie versuchen, solche Dateien mit ls, rm, cp, mv oder chmod zu entfernen, zu kopieren, umzubenennen oder anderweitig darauf zuzugreifen, erhalten Sie die folgenden Fehlermeldungen
| |
| [cmd]: Ungültige Option --
| |
|
| |
| Das liegt daran, dass Ihr Linux-System das führende Minus im Dateinamen als Teil einer Befehlszeilenoption interpretiert und eine ungültige Option oder einen nicht existierenden Modusfehler ausgibt
| |
|
| |
| Um mit einem führenden Bindestrich im Dateinamen unter der Linux-Shell umzugehen, können Sie eine der beiden folgenden Methoden ausprobieren
| |
|
| |
| ; Methode Eins
| |
| Da ein führendes Minuszeichen im Dateinamen zu Mehrdeutigkeiten bei der Erkennung des Dateinamens führt, müssen Sie diese Mehrdeutigkeit einfach beseitigen, indem Sie dem Dateinamen einen Pfadnamen voranstellen
| |
| * Wenn Sie zum Beispiel eine Datei mit dem Namen -my.txt im aktuellen Verzeichnis haben, können Sie sie wie folgt aufrufen
| |
| $ chmod 600 ./-mein.txt
| |
| $ rm ./-mein.txt
| |
|
| |
| ; Methode zwei
| |
| Die zweite Methode, mit einem führenden Bindestrich umzugehen, besteht darin, ein spezielles Argument zu nutzen, das von getopt() als "Ende der Option" interpretiert wird
| |
| * Die meisten Standard-Linux-Befehlszeilenprogramme verwenden getopt(), um Befehlszeilenargumente zu verarbeiten
| |
| * Wenn getopt() auf -- stößt, stoppt es den Options-Scan-Prozess
| |
| * Fügen Sie daher einfach -- vor dem Dateinamen ein, um deutlich zu machen, dass der Dateiname mit Bindestrich nicht Teil der Kommandozeilenargumente ist
| |
| $ chmod -- 600 -meine.txt
| |
| $ rm -- -meine.txt
| |
|
| |
| == Verschieben von Dateien, die mit einem Bindestrich beginnen ==
| |
| Wie verschiebe ich inUnix- oder Linux-Betriebssystemen Dateien, die mit einem Bindestrich beginnen (z. B. <kbd>/home/you/--filename.txt</kbd> oder <kbd>/home/you/-filename.txt</kbd>)? Wie kopiere ich eine Datei, deren Name mit einem Bindestrich ("<kbd>-</kbd>") beginnt?
| |
| Viele Meta-Zeichen wie Semikolon, Leerzeichen, Backslashes, Dollarzeichen, Fragezeichen und Sternchen sind Zeichen, die unter Linux und Unix-ähnlichen Betriebssystemen als Shell-Befehle interpretiert werden
| |
| Zum Beispiel wird <kbd>-</kbd> oder <kbd>--</kbd> (Bindestrich oder Bindestrich) als Option interpretiert, die dem Befehl übergeben wird
| |
| * Probieren Sie die folgenden Vorschläge zum Verschieben (mv) oder Kopieren (cp) dieser Dateien aus
| |
| * Diese Optionen sind nicht auf den mv- oder cp-Befehl beschränkt
| |
| * Alle Befehle können die Tipps verwenden, wenn sie einen Dateinamen behandeln, der mit einem Bindestrich<kbd>(-</kbd> oder <kbd>--</kbd>) beginnt
| |
|
| |
| === Datei verschieben, die mit einem Bindestrich beginnt ===
| |
| Die Syntax lautet wie folgt
| |
| cp -- Quelle-Zielcp [Option] -- Quelle-Ziel
| |
| Wir verwenden "<kbd>'''--'''</kbd>", damit Linux- und Unix-Befehle die Shell-Befehlszeilenoptionen nicht mehr parsen
| |
| * Sehen wir uns nun einige Beispiele an
| |
|
| |
| === Erstellen Sie eine Testdatei ===
| |
| Geben Sie den folgenden Befehl ein
| |
| cd /tmp/> '-foo.txt'> '--bar.txt'
| |
|
| |
| ==== Dateien auflisten, die mit einem Bindestrich beginnen ====
| |
| Versuchen Sie, sie aufzulisten, geben Sie ein
| |
| <syntaxhighlight lang="bash" highlight="1" line>
| |
| ls -l *.txt
| |
| ls: nicht erkannte Option '--bar.txt' Versuchen Sie `ls --help' für weitere Informationen
| |
| </syntaxhighlight>
| |
|
| |
| Um die Optionsliste zu begrenzen, verwenden Sie <kbd>--</kbd>, d. h. geben Sie den folgenden ls-Befehl ein
| |
| <syntaxhighlight lang="bash" highlight="1" line>
| |
| ls -l -- *.txt
| |
| </syntaxhighlight>
| |
|
| |
| ==== Die Befehle cp und mv ====
| |
| Wenn eine Datei, deren Name mit <kbd>-</kbd> oder <kbd>--</kbd> beginnt, kopiert oder verschiebt man Dateien mit der folgenden Syntax
| |
| cp -- '--bar.txt' /path/to/destcp -- '-test.doc' /home/vivek/backups/test.doc
| |
| ODER
| |
| cp -v -- '--bar.txt ' /pfad/nach/fest
| |
| Um Dateien zu verschieben
| |
| mv -- '--bar.txt' /Pfad/nach/Ziel
| |
| ODER
| |
| mv -v -- '--bar.txt ' /Pfad/nach/Ziel
| |
|
| |
| === Unix und Linux kopieren Dateien, die mit einem Bindestrich beginnen ===
| |
| Das <kbd>-</kbd> oder <kbd>--</kbd> gilt als Teil von Befehlszeilenoptionen
| |
| * Daher können Sie keine Dateien kopieren, auflisten, löschen oder verschieben, die mit diesen Zeichen beginnen
| |
| * Kurz gesagt, die Syntax lautet wie folgt
| |
| cp options -- '--filename' /destmv options -- '--filename' /dest
| |
| Die <kbd>--</kbd> begrenzen die Optionsliste
| |
| * Spätere Argumente, falls vorhanden, werden als Operanden behandelt, auch wenn sie mit <kbd>- oder</kbd> - beginnen
| |
| * Dies gilt für alle Linux/Unix/macOS/*BSD-Befehle wie rm, cp, mv, ls, ln und so weiter
| |
| command -- 'file'command [options] -- 'file'rm -- '--filename'rm -fr -- '-dirname'rmdir -- '--dirname'
| |
|
| |
| ==== So verwenden Sie den Befehl find für denselben Zweck ====
| |
| Die Syntax lautet
| |
|
| |
| <code>find /dir/to/search -maxdepth 1 -name '--filename' -delete</code>
| |
|
| |
| Siehe GNU find man page hier
| |
|
| |
| === Tipp: Behandlung eines Dateinamens, der mit einem Bindestrich<kbd>(-</kbd>) beginnt ===
| |
| Sie können den Bindestrich aus dem Befehl "ausblenden", indem Sie den Dateinamen mit <kbd>./</kbd> (Punkt-Schrägstrich) beginnen
| |
| * Versuchen Sie zum Beispiel, eine Datei namens "<kbd>-filename.txt</kbd>" mit dem Befehl rm zu löschen
| |
| > '-filename'rm -filename # wird eine Fehlermeldung #rm./-filename
| |
|
| |
| === Schlussfolgerung ===
| |
| Das <kbd>--</kbd> ist technisch gesehen als Begrenzung der Optionsliste bekannt
| |
| * Spätere Argumente, falls vorhanden, werden als Operanden behandelt, auch wenn sie mit <kbd>-</kbd> beginnen und die Syntax lautet
| |
|
| |
| <code>command -- -foo</code>
| |
|
| |
| <code>command -- -bar</code>
| |
|
| |
| <code>command -arg1 -option2 -- -foobar</code>
| |
|
| |
| <code>## sort liest aus der Datei mit dem Namen '-filename' ##</code>
| |
|
| |
| <code>sort -- -filename</code>
| |
|
| |
| <code>## grep command findet den passenden String mit dem Namen '--dom' ##</code>
| |
|
| |
| <code>virsh --help | grep --color -- '--dom'</code>
| |
|
| |
| Auf dieser Seite wurde erklärt, wie man mit einem Linux- oder Unix-Dateinamen umgeht, der mit einem Bindestrich<kbd>(-</kbd>) beginnt
| |
| * Der Trick ist, den Dateinamen entweder mit <kbd>./</kbd> zu beginnen oder das <kbd>--</kbd> vor dem Dateinamen zu übergeben
| |
|
| |
| === Dateinamen kürzen ===
| |
| ==== rename ====
| |
| siehe [[Rename#Dateinamen_kürzen|Dateinamen kürzen mit rename]]
| |
|
| |
| ==== Shellscript ====
| |
| ; Beispiel
| |
| MP3-Dateien auf 30 Zeichen kürzen
| |
| <syntaxhighlight lang="bash" line>
| |
| for altname in *.mp3; do neuname=$(echo $altname | cut -c -26); mv "$altname" "$neuname.mp3"; done
| |
| </syntaxhighlight>
| |
|
| |
|
| |
| [[Kategorie:Linux/Datei/Dateinamen]]
| |