web-dev-qa-db-fra.com

Alternative à trouver?

Y a-t-il une alternative find programme avec une interface CLI plus conventionnelle? find fonctionne et attend des paramètres de manière douloureuse différente de la plupart des autres utilisateurs.

Clarification: Je recherche un programme qui a la plupart des mêmes fonctionnalités que trouvez avec une interface de commande qui fonctionne et ressemble à des recommandations de commande de commande POSIX (ou au moins GNU).

32
Tamás Szelei

C'est une idée fausse commune.

Trouver suit la syntaxe des options. Vous venez de confondre des primaires d'expression avec des options:

 find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
 [cmd][-->        options          <--] [--> arg0..argN  <--]

L'alternative est localisée. Mais trouver implémente sa propre syntaxe d'expression, car il fournit un ensemble riche de filtres et d'options d'action. Il n'y a pas d'alternative qui peut faire la même chose, simplement parce que cela serait redondant.

11
Mel

Cela dépend de la fonctionnalité précise de find que vous comptez sur. Si elle est (principalement) la fonctionnalité de recherche, certaines obus appuient des globs récursifs. E.g., avec zsh:

% find . -name \*c
./a/b/foo.c
./a/bar.c
./baz.c
inoshiro% ls *.c
baz.c
% ls **/*.c 
a/bar.c  a/b/foo.c  baz.c

ZSH a beaucoup plus de possibilités de trésorerie à travers Glob Qualifiers (look près de la fin de man zshexpn). Par exemple:

ls -l **/*(.)find -type f -ls
[.____] ls *(m-2u:$USER:)find -mtime -2 -user $USER

Bash 4 a également **/ (Vous devez l'activer avec shopt -s globstar), Mais rien de tel que Glob Qualificiers.

10
jmtd

Je jetterais un coup d'oeil à locate. Il examinera dans sa base de données de fichiers et imprimera rapidement des noms de chemin qui correspondent à ce que vous donnez.

kevin@box:~$ locate odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
/usr/share/gimp/2.0/help/en/gimp-tool-dodge-burn.html
....
kevin@box:~$ locate .odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
kevin@box:~$ 

Comme vous pouvez le constater, c'est une correspondance de sous-texte: si vous le donnez odg, alors cela correspondra à Dçae. Mais si vous le donnez .odg, alors ce ne sera pas.

Il y a un inconvénient, cependant: il a besoin d'une base de données. Cette base de données doit être mise à jour lorsque les choses changent. My Fedora 13 Installer a cependant cela dans un crontab quotidien.

10
Kevin M

Qu'essayez-vous de trouver? Si vous recherchez généralement des fichiers de code source, jetez un coup d'œil à ack . C'est fondamentalement un outil de recherche de code source, mais l'ACK -f Le commutateur trouvera des fichiers correspondant à un fichier de type donné.

Donc, si vous souhaitez trouver tous les fichiers PERL dans un répertoire, par exemple:

ack -f --Perl

Si vous n'aimez pas les fichiers filetypes que ACK reconnaît, vous pouvez ajouter votre propre dans votre ~/.ackrc.

aCK n'est pas un classeur de fichier à usage général comme find, mais si vous travaillez avec le code source, il peut être très pratique.

6
Andy Lester