J'ai regardé d'autres questions similaires, mais je n'en ai pas trouvé une qui me permettrait de saisir le concept et de le rendre applicable à ma situation en fonction de mon temps limité. J'exécute simplement la commande find pour trouver certains fichiers, mais certains fichiers dans les sous-répertoires ont le même nom que je veux ignorer. Merci pour toute aide. Voici la commande que j'utilise:
Les fichiers / modèles qui m'intéressent: / dev / abc-scanner, / dev / abc-cash ....
La commande:
find /dev/ -name 'abc-*'
Ce qui est retourné:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
Je veux ignorer ces derniers fichiers: /dev/.udev / ...
Réponses:
Si vous souhaitez simplement limiter la recherche au premier niveau, vous pouvez faire:
... ou si vous souhaitez particulièrement exclure le
.udev
répertoire, vous pouvez faire:la source
xargs
place, donc quelque chose comme:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
mais s'il y a une chance qu'ils aient des espaces dans les noms, vous devriez le fairefind /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
... sauf au moins sur mon Linux/dev/*/*
n'inclut pas les fichiers/dev/.udev/*
, vous pouvez donc omettre le fichierfgrep -v
.Y a-t-il une raison particulière que vous devez utiliser
find
? Vous pouvez simplement utiliserls
pour trouver des fichiers qui correspondent à un modèle dans un répertoire.Si vous avez besoin d'utiliser
find
, vous pouvez utiliser le-maxdepth 1
commutateur pour appliquer uniquement au répertoire spécifié.la source
-maxdepth 1
plutôt que-maxdepth 0
ls
. Vous pouvez trouver les mêmes fichiers avececho
ouwc
ou tout ce que vous avez, car le shell développe le caractère générique pour vous. C'estfor file in /dev/abc-*; do something with each "$file"; done
peut-être ce que le PO recherche réellement.find
ne l'a pas par exemple.ls
est superflu.for f in abc*; ...
est tout ce dont vous avez besoin.Cela peut faire ce que vous voulez:
la source
Ça ne marche pas pour moi. Il ne renvoie rien. Si je fais juste '.' il me donne tous les fichiers dans le répertoire sous celui sur lequel je travaille.
Ne rien renvoyer avec '.' à la place, j'obtiens la liste de tous les «gros» fichiers dans mon répertoire ainsi que le répertoire rootfiles / où je stocke les anciens.
Continuer. Cela marche.
Apparemment, cela
/dev
signifie un répertoire d'intérêt. Mais./
est nécessaire, pas seulement.
. Le besoin de l '/
n'était pas évident même après avoir compris ce que/dev
signifiait plus ou moins.Je n'ai pas pu répondre en commentaire car je n'ai pas de «réputation».
la source