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.
echo /root/*.csv
?Antworten:
Sie können dies mit
-maxdepth
Option tunVon
man find
quelle
Mit Standard
find
:Dadurch werden alle Verzeichnisse
/root
mit Ausnahme des/root
Verzeichnisses selbst aus der Suche entfernt (entfernt) und die Dateinamen aller übereinstimmenden regulären Dateien gedruckt*.csv
.Mit GNU
find
(und jeder anderenfind
Implementierung, die versteht-maxdepth
):quelle
-depth 1
(entspricht GNUs-mindepth 1 -maxdepth 1
) mit FreeBSDfind
.-depth
, es macht nicht das, was wir unter OpenBSD wollen (es ist dasselbe wie-d
"Verzeichnisse in Nachbestellung besuchen"). Dasfind
scheint-maxdepth
aber ...-depth -2
,-depth +1
,-depth 1
die das gleiche Format wie viele andere Prädikate folgen mehr Sinn , als macht-mindepth
,-maxdepth
IMO.