|
|
Zeile 51: |
Zeile 51: |
| </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 = | | = Dateinamen kürzen = |
Dateinamen bereinigen - Kurzbeschreibung
Beschreibung
Werkzeuge
Werkzeug |
Beschreibung
|
detox |
benennt Dateien um, damit sie leichter zu handhaben sind
|
convmv |
konvertiert den Zeichensatz von Dateinamen
|
fslint |
Utility to Fix Problems with Filesystems Data
|
mv/sed |
sed -e 's/[^A-Za-z0-9._-]/_/g')
|
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
|
Syntax
Anwendung
Konfiguration
Dateien
Anhang
Siehe auch
Man-Pages
Info-Pages
Links
Projekt
Weblinks
Dateinamen kürzen
rename
siehe Dateinamen kürzen mit rename
Shellscript
- Beispiel
MP3-Dateien auf 30 Zeichen kürzen
for altname in *.mp3; do neuname=$(echo $altname | cut -c -26); mv "$altname" "$neuname.mp3"; done