Dateien ohne Endung finden


43

Angenommen, ich habe:

foo.txt
bar
baz.ooo

Wenn ich das benutze ls -1 !(*.*)dann komme ich erst barauf den ausgang. Großartig, jetzt möchte ich die gleichen Ergebnisse mit find erzielen - einige find -regex, die den Job erledigen.

HINWEIS:

find -name !(*.*)ist nicht die Antwort, da !(*.*)es immer noch Bashs Glob ist, den ich NICHT verwenden kann.

Antworten:


63

Sie könnten Folgendes verwenden: find . -type f ! -name "*.*" Das !negiert den folgenden Ausdruck, hier einen Dateinamen, der ein '.' enthält.

Sie können auch die -maxdepthOption verwenden, um die Suchtiefe zu verringern.


1
Ich mag deine Antwort am meisten, da meine andere Einschränkungen für die Dateinamen hat und deine kugelsicher ist.
Pawel7318

Das ist auch toll, wenn ls -1 !(*.*)es nicht funktioniert, weil das !"Ereignis nicht gefunden" gibt.
Noumenon

2
@ Noumenon tun set +H, um das zu lösen
pawel7318

1
Wenn Sie .gitignoreeine Datei ohne Dateierweiterung (wie path.extname () des Knotens) behandeln, verwenden Sie ! -name "?*.*"anstelle von! -name "*.*"
Johnny Wong den
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.