Ein NTFS-Verzeichnis ist in einer Bash-Shell geöffnet. Mit welchem Befehl werden alle Dateinamen in einem Verzeichnis rekursiv auf das für ext3 erforderliche Limit von 255 Zeichen gekürzt?Befehl zum Abschneiden aller Dateinamen bei 255 Zeichen
Antwort
Wenn Sie Zugriff auf einen Windows-Shell haben, können Sie verwenden:
@echo off
setlocal EnableDelayedExpansion
REM loop over all files in the cwd
for /f %%a in ('dir /a-d /b') do (
REM store this filename in a variable so we can do substringing
set ThisFileName=%%a
REM now take a substring
set ThisShortFileName=!ThisFileName:~0,255!
REM finally, the rename:
echo ren %%a !ThisShortFileName!
)
:EOF
endlocal
(Anmerkung: Ich habe ein Echo vor dem Umbenennungsbefehl hinzugefügt nur so können Sie visuell überprüfen, dass es, bevor sie tatsächlich funktioniert es läuft. Arbeiten auf meine Box.)
ich bin sicher, dass jemand, der gerade auf einem * nix-Box könnte ein ähnliches Skript für bash machen, aber ich bin in Windows-Welt stecken :)
Viel Glück !
$ cat truncname
#!/bin/bash
# requires basename, dirname, and sed
mv $1 `dirname $1`/`basename $1 | sed 's/^\(.\{0,255\}\).*/\1/'`
$ chmod a+x truncname
$ find . -exec ./truncname {} \;
Ich habe versucht, den Shell-Skript auf einem Ordner ausgeführt und bekam folgende Fehlermeldung: Aufforderung:/media/DUALOS $ sh ~/truncname.sh Sachen /home/username/truncname.sh: 1: $: nicht gefunden mv: kann 'stuff 'nicht in ein Unterverzeichnis von sich selbst verschieben,' ./stuff/stuff' /home/username/truncname.sh: 5: $: nicht gefunden /home/username/truncname.sh: 6: $ : nicht gefunden –
Unter der Annahme, dass die Schale in dem NTFS-Verzeichnis sitzt, wie es PWD ist:
for f in *; do mv $f ${f:0:255}; done
ähnlich wie Daves sed basierte Version, vermeidet aber eine exec pro Datei. Wird aufgrund des maximalen Befehlslimits auf ein wirklich riesiges Verzeichnis aufblasen und macht keine Unterverzeichnisse.
- 1. Suchen lange (> 255) Dateinamen
- 2. Powerpoint-Hyperlink-Limit bei 255 Zeichen
- 3. Befehl zum Auflisten aller Quelldateien in TCL
- 4. Befehl zum Neustart aller aktiven Docker-Container?
- 5. Ist "VARCHAR (255) CHARACTER SET utf8" 255 Bytes oder 255 Zeichen
- 6. Warum Color.FromArgb (255, 255, 255, 255)! = Farbe.Weiß?
- 7. Befehl mit dem Status 255 5.3.0- Email
- 8. Anzeige> 255 Zeichen in Excel Zelle
- 9. Blackberry Anwendung Beschreibung Text Fehler für mehr als 255 Zeichen
- 10. Ersetzen oder löschen Sie bestimmte Zeichen aus Dateinamen aller Dateien in einem Ordner
- 11. SQL-Befehl zum Lesen aller Spalten in der ersten Zeile
- 12. Alias oder Befehl zum Kompilieren und Verknüpfen aller C-Dateien
- 13. Skripte zum Auflisten aller unterschiedlichen Zeichen in einer Textdatei
- 14. Regex zum Erfassen aller Texte vor {Zeichen - Objective C
- 15. Anzeige aller Dateinamen aus einem bestimmten Ordner
- 16. VBA Trim() -Funktion zum abschneiden von Text seltsam!
- 17. C - Warum werden Zahlen zu einem Char bei 255 zurückgesetzt?
- 18. Wie kann ich eine Zeichenfolge nach einem bestimmten Zeichen abschneiden?
- 19. NLog automatische Abschneiden Nachrichten
- 20. Wie überwinden 255 Zeichen Grenze für bedingte definiert?
- 21. jquery-Plugins zum Abschneiden langer Textzeichenfolge nach Containerbreite/-höhe
- 22. Remote-SSH-Befehl in Runtime verlass mit Code 255
- 23. Datei abschneiden
- 24. Erstellen von Dateinamen mit Unicode-Zeichen
- 25. Unix-Shell-Skript zum Abschneiden einer großen Datei
- 26. Eintrag Absolute Pfade von Dateien im Terminal w/mehr als 255 Zeichen
- 27. RWDBReader Kann nicht mehr als 255 Zeichen lesen
- 28. Wie mehr als 255 Zeichen in Parameter in VBA?
- 29. SqlBulkCopy kopiert keine Zeichenfolgen> 255 Zeichen lang
- 30. Delphi: Strings in Records größer als 255 Zeichen
Das funktionierte, aber ich musste die Dateinamen noch kürzer machen, da die Verzeichnisse auf die 255 Zeichen angerechnet wurden. –