Je travaille avec la structure de répertoire suivante :
onathan@Aristotle:~/EclipseWorkspaces/ShellUtilities/ShellUtilities$ ls -R
.:
calculateTargetDay CustomizeIso ec makeExecutable Models modifyElementList Sourced test file Testing valrelease
./Models:
testcase
./Sourced:
colors stddefs stdFunctions SupportTesting
./Testing:
test testCalculateTargetDay testColors testModifyElementList testStddefs testStdFunctions testSupportTesting tst
Ce que je veux faire, c'est lancer une commande sur tous les fichiers du répertoire de premier niveau et du répertoire Essais . Je ne veux pas exécuter la commande sur les fichiers dans les répertoires Source : et Modèles . Pour ce faire, j'ai exécuté la commande suivante :
find . -name Sourced -prune -name Models -prune ! -name '\.*' -execdir echo '{}' \;
Dans cet exemple, la commande n'a été exécutée sur aucun des fichiers de la structure du répertoire.
Lorsque j'ai exécuté la commande suivante dans la même structure de répertoire :
find . ! -name '\.*' -execdir echo '{}' \;
J'ai obtenu le résultat suivant
./calculateTargetDay
./CustomizeIso
./Testing
./testModifyElementList
./test
./testColors
./testStdFunctions
./testCalculateTargetDay
./testStddefs
./testSupportTesting
./tst
./test file
./modifyElementList
./ec
./Sourced
./stdFunctions
./stddefs
./SupportTesting
./colors
./valrelease
./Models
./testcase
./makeExecutable
Comme vous pouvez le constater, je peux exécuter une commande sur l'arborescence du répertoire et faire en sorte qu'elle s'applique à tous les fichiers, ou je peux essayer d'être sélectif et me retrouver sans aucun fichier. Comment puis-je obtenir l'application sélective d'une commande dont j'ai besoin ?