
Betriebssystem: Kubuntu 22.04.4 LTS x86_64
um oben anzuzeigen:
neofetch --stdout |grep 'OS:'
.
Wie bereinigt man einfach einen Dateinamen, nicht aber den Dateiinhalt?
Durch Entfernen aus einem Dateinamen:
\n
Zeilenumbrüche\t
Registerkarten- nicht druckbare Zeichen
- Räume
für Microsoft Windows nein < > : " \ / | ? *
im Dateinamen.
< (less than)
> (greater than)
: (colon - sometimes works, but is actually NTFS Alternate Data Streams)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
.
Beispiel 1:
So erstellen Sie einen problematischen Dateinamen.
Fügen Sie mit mv
im Terminal eine neue Zeile in einen Dateinamen ein:
touch a
mv a $'b\nc' # move (rename) files
ls # 'b'$'\n''c'
ls -b # b\nc
mit GUI, Drücken Sie F2 = Umbenennen:
b
c
.
Beispiel 2:
Längerer Name.
touch 'This filename will have Tabs and Newlines_.txt'
mv 'This filename will have Tabs and Newlines_.txt' $'This\tfilename\twill\thave\tTabs\nand\nNewlines_.txt'
ls # 'This'$'\t''filename'$'\t''will'$'\t''have'$'\n''Tabs'$'\n''and'$'\n''Newlines_.txt'
ls -b # This\tfilename\twill\thave\nTabs\nand\nNewlines_.txt
mit GUI, Drücken Sie F2 = Umbenennen:
This filename will have Tabs
and
Newlines_.txt
.
Beispiel 3:
Engagierter.
touch 'This filename will have Tabs and Newlines & SPACES & colon: _.txt'
mv 'This filename will have Tabs and Newlines & SPACES & colon: _.txt' $'This\tfilename\twill\thave\tTabs\nand\nNewlines & SPACES & colon: _.txt'
ls # 'This'$'\t''filename'$'\t''will'$'\t''have'$'\t''Tabs'$'\n''and'$'\n''Newlines & SPACES & colon: _.txt'
ls -b # This\tfilename\twill\thave\tTabs\nand\nNewlines\ &\ SPACES\ &\ colon:\ _.txt
mit GUI, Drücken Sie F2 = Umbenennen:
This filename will have Tabs
and
Newlines & SPACES & colon: _.txt
.
Bash-Bereinigungsdateiname in Beispiel 3:
#!/bin/bash
clear
# FILE : original_filename comes from inotifywait command, On access, auto detect a file in /home/xxx/Downloads to eventually do a CLAM virus scan on FILE.
filename1=$FILE
filename1=$'This\tfilename\twill\thave\tTabs\nand\nNewlines\ &\ SPACES\ &\ colon:\ _.txt'
echo "$filename1"
filename2="${filename1//[$'\t'$'\n'$'\e'$'\r'$'\f'$'\v'$'\b'$'\a'$'\0']/-}" # Replace Non Printable Characters with dash -
echo "$filename2"
filename3="${filename2//[$'\ ']/_}" # Replace space with underscore _
echo "$filename3"
filename4="${filename3//[$':']/_}" # Replace colon : with underscore _
echo "$filename4"
.
Bash-Ergebnis Beispiel 3:
This filename will have Tabs
and
Newlines\ &\ SPACES\ &\ colon:\ _.txt
This-filename-will-have-Tabs-and-Newlines\ &\ SPACES\ &\ colon:\ _.txt
This-filename-will-have-Tabs-and-Newlines__&__SPACES__&__colon:___.txt
This-filename-will-have-Tabs-and-Newlines__&__SPACES__&__colon____.txt
Nicht druckbare Zeichen durch Bindestriche ersetzt - einschließlich
\n
Zeilenumbrüche\t
Tabulatoren
Leerzeichen durch Unterstrich _
ersetzt Doppelpunkt:
durch Unterstrich _ ersetzt
.
Referenz 1:
Vollständige Liste nicht druckbarer Zeichen
https://fjolt.com/article/linux-non-printable-characters
Name Binary Decimal Hexadecimal Octal Caret Escape
Notation Sequence
Null 000 0000 0 00 000 ^@ \0
Beep(BEL) 000 0111 7 07 007 ^G \a
Backspace(BS) 000 1000 8 08 010 ^H \b
HorizontalTab(HT) 000 1001 9 09 011 ^I \t
LineFeed(LF) 000 1010 10 0A 012 ^J \n
VerticalTab(VT) 000 1011 11 0B 013 ^K \v
FormFeed(FF) 000 1100 12 0C 014 ^L \f
CarriageReturn(CR) 000 1101 13 0D 015 ^M \r
Escape(ESC) 001 1011 27 1B 033 ^[ \e
9 Escape Sequences:
\0
\a
\b
\t
\n
\v
\f
\r
\e
used:
column -t -o ' ' a.txt b.txt
.
orig_filename=$'TN1\tThis\nFileName\nHas\tTabsandNewlines'
echo test > "$orig_filename"
new_filename="${orig_filename//[$'\t'$'\n']/-}"
mv --no-clobber "$orig_filename" "$new_filename"
.
Referenz 3:
Shell-Parametererweiterung
${parameter//pattern/string}
https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
Frage:
Wie kann man einen Dateinamen einfach bereinigen?
Was sind die einfacheren Befehle?
--
Antwort1
Sie können eine Anwendung wie verwendenEntgiftungdie eingebaute Sets von dem hat, was Sie reinigen möchten. Sie heißenSequenzen. Anwendungsbeispiel:
detox -s safe -v /some/folder/or/file
Dabei wird nur eine Sequenz verwendet, die den Namen für die Verwendung unter Unix sicherer macht. -v
Das Flag „verbose“ gibt die betroffenen Namen genau an.
Sie können auch Ihre eigenen kombinierten Sequenzen in detoxrc
der Konfigurationsdatei erstellen, wie in der obigen Dokumentation beschrieben.