web-dev-qa-db-fra.com

bash s'échapper et trouver la commande

J'essaie de supprimer ennuyeux \- échapper à cette commande:

find . \( -name '*.mp3' -o -name '*.jpg' \) -print

en le mettant entre guillemets simples:

find . '( -name *.mp3 -o -name *.jpg )' -print

ce qui implique que les arguments vont directement au find sans aucune extension.

Cependant, la sortie est différente.

4
user52151
find . -name '*.mp3' -o -name '*.jpg' -print
5
Jim Salter

Vous pouvez également utiliser des expressions régulières, ce qui à mon avis rend cela plus concis et vous donne un meilleur contrôle:

find . -regextype posix-egrep -iregex '.*(pdf|mp3)$'

Cela trouve tous les fichiers (ou répertoires, sauf si vous spécifiez -type f) qui se terminent en pdf ou mp3.

6
Marcin Kaminski
find . '( -name *.mp3 -o -name *.jpg )' -print

Cela recherche tous les fichiers dans les répertoires nommés . et ( -name *.mp3 -o -name *.jpg ), ce qui n'est probablement pas ce que vous vouliez.

Utilisez les guillemets simples pour les parenthèses rondes:

find . '(' -name '*.mp3' -o -name '*.jpg' ')' -print
4
phoibos