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.

pawel7318
quelle

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.

fduff
quelle
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