web-dev-qa-db-fra.com

Comment trouver uniquement les fichiers dans un répertoire donné et ignorer les sous-répertoires à l'aide de bash

J'ai examiné d'autres questions similaires, mais je n'en ai trouvé aucune qui me permettrait de saisir le concept et de le rendre applicable à ma situation en fonction de mon temps limité. J'utilise simplement la commande find pour trouver certains fichiers, mais certains fichiers dans des sous-répertoires ont le même nom que je veux ignorer. Merci pour toute aide. Ci-dessous 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/...

98
suffa

Si vous voulez simplement limiter la recherche au premier niveau, vous pouvez faire:

 find /dev -maxdepth 1 -name 'abc-*'

... ou si vous voulez particulièrement exclure le .udev répertoire, vous pouvez faire:

 find /dev -name '.udev' -Prune -o -name 'abc-*' -print
158
Mark Longair

Y a-t-il une raison particulière pour laquelle vous devez utiliser find? Vous pouvez simplement utiliser ls pour trouver les fichiers qui correspondent à un modèle dans un répertoire.

ls /dev/abc-*

Si vous avez besoin d'utiliser find, vous pouvez utiliser le -maxdepth 1 passer à s’appliquer uniquement au répertoire spécifié.

9
Stephen Darlington

Cela peut faire ce que vous voulez:

find /dev \( ! -name /dev -Prune \) -type f -print
3
Chris J