2010-12-08 56 views
0

J'ai un répertoire avec un tas d'images de personnes dedans. Malheureusement, le système dont proviennent les images a ses propres identifiants uniques pour un tas d'images de personnes qui ne sont pas utilisées dans d'autres systèmes de l'entreprise (les clients ont une image mais ne sont pas réellement dans le db ... .just dans le stockage du serveur d'image). Heureusement, les images de 8 entiers ou plus suivies d'une extension sont indésirables (j'ai vu .bmp et .jpg ... mais il pourrait y en avoir d'autres). J'ai essayé la commande find suivante en tant que test avant d'échanger le fichier ls -lh avec un fichier rm -f et d'écrire la suppression des photos pour les autres systèmes. Je devine que je suis mal compris des expressions régulières, comme c'est habituellement le cas, mais partout où je regarde bien semble que ce qui suit devrait fonctionner pour ce que je cherche. Le \ d {8,} ne semble pas fonctionner car le supprimer trouve tout simplement bien, mais je ne veux pas tout .... juste ceux avec 8 entiers ou plus suivis par n'importe quoi. Qu'est-ce que je regarde ici?trouver la commande avec -regex et -exec, aide regex nécessaire

find /path/to/dir -regex '\/path\/to\/dir\/\d{8,}.*' -exec ls -lh {} \; 

Merci.

Répondre

4

Je ne sais pas si find les types regex sont spécifiques au système. J'ai vu dans le Linux qu'il a plusieurs types d'expressions régulières (POSIX sont différents d'Emacs). Il semble que les regex par défaut dans find sont de type emacs. Je l'ai vu que find a également une option -regextype, donc, en utilisant le posix-extended vous pouvez obtenir quelque chose de semblable à ce que vous voulez:

find /path/to/dir -regextype posix-extended -regex '/path/to/dir/[0-9]{8,}.*' -exec ls -lh {} \; 

mais vous n'avez pas \d sur ces types de regexes (je pense qu'ils proviennent de regex de type Perl seulement), et n'ont pas besoin d'antislashs pour /. Quoi qu'il en soit, ces travaux.

+0

Merci beaucoup. Je devrais trouver un bon livre à lire près de la cheminée au sujet des expressions régulières pendant l'hiver froid. Quelle meilleure façon de ressentir de la chaleur que de lire un livre sur des expressions régulières pendant une période de temps froid. – wilbbe01

+0

Haha, c'est vrai ... :) Ajouter à cela Perl ou Emacs-Lisp, et ensuite serait rond parfait :) –