Nicht rekursiv "finden"?

19

Mit /bin/find /root -name '*.csv'Renditen:

/root/small_devices.csv
/root/locating/located_201606291341.csv
/root/locating/located_201606301411.csv
/root/locating/g_cache.csv
/root/locating/located_201606291747.csv
/root/locating/located_201607031511.csv
/root/locating/located_201606291746.csv
/root/locating/located_201607031510.csv
/root/locating/located_201606301412.csv
/root/locating/located_201606301415.csv
/root/locating/located_201607031512.csv

Ich möchte eigentlich nicht alle Dateien unter /root/locating/, daher ist die erwartete Ausgabe einfach /root/small_devices.csv.

Gibt es eine effiziente Möglichkeit, "find" nicht rekursiv zu verwenden?

Ich benutze CentOS, wenn es darauf ankommt.

Weltraum
quelle
4
Warum kannst du nicht einfach so etwas tun echo /root/*.csv?
Stephen Harris
1
@ StephenHarris Hauptsächlich, weil ich nicht daran gedacht habe :)
DeepSpace

Antworten:

27

Sie können dies mit -maxdepthOption tun

/bin/find /root -maxdepth 1 -name '*.csv'

Von man find

-maxdepth Ebenen

Steigen Sie auf den meisten Ebenen (eine nicht negative Ganzzahl) von Verzeichnissen unterhalb der Startpunkte ab.

-maxdepth 0

bedeutet, die Tests und Aktionen nur auf die Ausgangspunkte selbst anzuwenden.

Sundeep
quelle
8

Mit Standard find:

find /root ! -path /root -prune -type f -name '*.csv'

Dadurch werden alle Verzeichnisse /rootmit Ausnahme des /rootVerzeichnisses selbst aus der Suche entfernt (entfernt) und die Dateinamen aller übereinstimmenden regulären Dateien gedruckt *.csv.

Mit GNU find(und jeder anderen findImplementierung, die versteht -maxdepth):

find /root -maxdepth 1 -type f -name '*.csv'
Kusalananda
quelle
Siehe auch -depth 1(entspricht GNUs -mindepth 1 -maxdepth 1) mit FreeBSD find.
Stéphane Chazelas
@ StéphaneChazelas Ich werde nicht erwähnen -depth, es macht nicht das, was wir unter OpenBSD wollen (es ist dasselbe wie -d"Verzeichnisse in Nachbestellung besuchen"). Das findscheint -maxdepthaber ...
Kusalananda
1
Ja, es sieht so aus, als wäre es nur FreeBSD (und Derivate wie Apple OS / X), nicht NetBSD oder OpenBSD. Schade , denn -depth -2, -depth +1, -depth 1die das gleiche Format wie viele andere Prädikate folgen mehr Sinn , als macht -mindepth, -maxdepthIMO.
Stéphane Chazelas