Ich habe mir andere ähnliche Fragen angesehen, aber keine gefunden, die es mir ermöglichen würde, das Konzept zu erfassen und es aufgrund meiner begrenzten Zeit auf meine Situation anzuwenden. Ich führe einfach den Befehl find aus, um bestimmte Dateien zu finden, aber einige Dateien in Unterverzeichnissen haben denselben Namen, den ich ignorieren möchte. Vielen Dank für jede Hilfe. Unten ist der Befehl, den ich benutze:
Die Dateien / Muster, die mich interessieren: / dev / abc-scanner, / dev / abc-cash ....
Der Befehl:
find /dev/ -name 'abc-*'
Was wird zurückgegeben:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
Ich möchte die letzteren Dateien ignorieren: /dev/.udev / ...
Antworten:
Wenn Sie den Fund nur auf die erste Ebene beschränken möchten, können Sie Folgendes tun:
... oder wenn Sie das
.udev
Verzeichnis besonders ausschließen möchten , können Sie Folgendes tun:quelle
xargs
stattdessen zu verwenden , also so etwas wie:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
Aber wenn es eine Chance gibt, dass die Namen Leerzeichen enthalten, sollten Sie dies tunfind /dev -maxdepth 1 -name 'abc-*' -print0 | xargs -0 ls -l
ls -l /dev/abc-*
for x in /dev/abc-*; do readlink -f $x; done
ls -l /dev/abc-* /dev/*/abc-* | fgrep -v /dev/.udev
... außer zumindest unter meinem Linux sind/dev/*/*
keine Dateien enthalten,/dev/.udev/*
so dass Sie das weglassen könnenfgrep -v
.Gibt es einen bestimmten Grund, den Sie verwenden müssen
find
? Sie können nurls
Dateien suchen, die einem Muster in einem Verzeichnis entsprechen.Wenn Sie verwenden müssen
find
, können Sie den-maxdepth 1
Schalter verwenden, um nur auf das angegebene Verzeichnis anzuwenden.quelle
-maxdepth 1
eher als-maxdepth 0
ls
. Sie können die gleichen Dateien mitecho
oderwc
oder was haben Sie finden, weil die Shell den Platzhalter für Sie erweitert. Sofor file in /dev/abc-*; do something with each "$file"; done
könnte das sein , was die OP wirklich sucht.find
hat es zum Beispiel nicht.ls
ist überflüssig.for f in abc*; ...
ist alles, was du brauchst.Dies kann tun, was Sie wollen:
quelle
Funktioniert bei mir nicht Es gibt nichts zurück. Wenn ich nur '.' Es gibt mir alle Dateien im Verzeichnis unter dem, an dem ich arbeite.
Gib nichts mit '.' Stattdessen erhalte ich eine Liste aller "großen" Dateien in meinem Verzeichnis sowie die Stammdateien / das Verzeichnis, in dem ich alte speichere.
Auch weiterhin. Das funktioniert.
Bedeutet anscheinend
/dev
Verzeichnis von Interesse. Wird./
aber nicht nur benötigt.
. Die Notwendigkeit für/
war nicht offensichtlich, selbst nachdem ich herausgefunden hatte, was/dev
mehr oder weniger bedeutete.Ich konnte nicht als Kommentar antworten, da ich keinen "Ruf" habe.
quelle