Trouvez des fichiers et des répertoires normaux

9

Comment puis-je dire (si je peux dire!) Trouver pour trouver des fichiers à la fois du répertoire et du type de fichier?

find -type fd

C'est comme les âges sombres heuristiques ici.

MageProspero
la source

Réponses:

12

Voici la commande que vous pouvez utiliser:

find -type f -or -type d
abat-jour
la source
7
Ou find -type f -o -type dpour une alternative compatible POSIX.
manatwork
Hé, j'ai rencontré un petit problème avec ça quand j'ai lancé $ find. -type d -ou -type f -et -dans "vision" il ne fait pas exactement ce que j'attends, est-ce que je manque quelque chose d'autre!
MageProspero
2
-a a priorité sur -o, utilisez des parenthèses (mais échappez-les pour le shell). Pas besoin d'utiliser le -or ou -and non standard.
Stéphane Chazelas
si j'essaie `trouver. -type d ou -type f -nom 'abc' . I get an error.. find: les chemins doivent précéder l'expression: `.. Une idée pourquoi?
alpha_989
1
@ alpha_989 manquant -avant or?
Mateusz Piotrowski
2

tl: dr

utilisation find . -name "*string*" -type f -o -name "*string*" -type d

explication

la commande -o ors complète complètement les arguments après le chemin du fichier, tels que les find . -name "*string*" -type f -o -type dcalculs find . (-name "*string*" -type f) -o (-type d). Pour cette raison, vous devez spécifier le

La plupart des utilisateurs voudront quelque chose qui ressemble à

find . -name  "*string*" -type f -o -name "*string*" -type d

qui calcule comme

find . (-name  "*string*" -type f) -o (-name "*string*" -type d)

trouver les détails de la syntaxe

-name "*string*"recherche les noms contenant la chaîne stringn'importe où.

Ulad Kasach
la source
1

Si vous utilisez la recherche GNU, la solution suivante pourrait vous convenir:

find -type d,f

Voir man findpour plus de détails:

Pour rechercher plusieurs types à la fois, vous pouvez fournir la liste combinée des lettres de type séparées par une virgule ,(extension GNU).

Mateusz Piotrowski
la source
2
Utilisation de la GNU findversion 4.7.0 .. Il ne semble pas prendre en charge ,. Le message d'erreur indique quefind: Arguments to -type should contain only one letter.
alpha_989