Ich möchte alle eindeutigen Erweiterungen von Dateien sehen, die in einem bestimmten Verzeichnis enthalten sind. Was ist der Befehl, dies in Bash zu tun?
Man könnte verwenden find . -type f
, um alle Dateien im aktuellen Verzeichnis abzurufen, dann die Erweiterung zu entfernen und an sie weiterzuleiten uniq
. Was ist der einfachste Weg, um die Erweiterung zu entfernen?
sed: illegal option -- r
-E
anstelle von-r
OS X.Funktioniert unter OS X, außer bei Dateien ohne Erweiterung. Mein Download-Ordner:
Vielleicht brauchen Sie
sed -r
stattdessen?Kleines Problem: Dateien ohne Erweiterungen drucken ihren Namen. Versteckte Dateien (z. B.
.DS_Store
) drucken ihren Namen ohne Führung.
.quelle
sort -u
stattsort | uniq
. Weniger Gabeln und Ressourcenverbrauch.[]
.Hier ist eine weitere Lösung, die nicht durch Dateinamen mit eingebetteten Zeilenumbrüchen verwechselt wird und
sort -uz
zum korrekten Sortieren von Dateierweiterungen verwendet wird, in die möglicherweise auch Zeilenumbrüche eingebettet sind:quelle
Eine schnell und einfach zu merkende Möglichkeit, die Erweiterung zu entfernen, besteht darin, anzunehmen, dass alle Dateinamen das Format "name.ext" haben, und dann Folgendes zu verwenden:
Dies gibt an, wie viele eindeutige Erweiterungen es gibt, zum Beispiel:
quelle
siehe, deshalb mag ich awk:
quelle