Souvent, j'ai un nom de fichier et son chemin partiel, par exemple. "contenu/docs/fichier.xml".
Existe-t-il un moyen simple de rechercher ce fichier sans couper manuellement son nom en plusieurs parties pour fournir le nom de répertoire et le nom de fichier séparément?
Ce serait formidable si find
fonctionne de cette manière, je peux donc exécuter find content/docs/file.xml
, mais malheureusement, ce n’est pas le cas.
Transmettez un caractère générique *
pour indiquer une correspondance pour quelque chose . Vous devez également vous échapper du *
s, par exemple:
find . -path \*content/docs/file.xml
ou mettez le motif entre guillemets, par exemple:
find . -path "*content/docs/file.xml"
Comme le décrit la page de manuel:
$ find. -name * .c -print
find: les chemins doivent précéder l'expression
Cela est dû au fait que * .c a été développé par le shell, ce qui a permis à find de recevoir une ligne de commande comme celle-ci:
trouver . -nom bigram.c code.c frcode.c Locate.c -print
Cette commande ne va bien sûr pas au travail. Au lieu de procéder ainsi, vous devriez inclure le motif entre guillemets ou échapper au caractère générique:
$ find. -nom\*. c -print
find a aussi une option -wholename find $top_dir -wholename *string*
find /usr -wholename *in/abiw*
>/usr/bin/abiword
find . -type f | grep "content/docs/file.xml"
ou juste
locate content/docs/file.xml
Par exemple, la recherche de fichiers dans un emplacement à l'aide d'un astérisque/caractère générique (*
) en tant que: dir=“/apps/*/instance01/"
vous pouvez utiliser find ${dir} -name “*.jks”
. mettre tous les fichiers dans un tableau comme celui-ci:
arr=(`find ${dir} -name “*.jks"`)
si vous voulez obtenir des fichiers avec d’autres extensions, utilisez ‘ou’ comme ceci:
-name "*.keystore" -o -name "*.jks" -o -name “*.p12"
car -name
n'accepte que les chaînes simples, utilisez donc 'ou'.
Enfin, mettez tout dans un tableau comme ceci:
arr=(`find ${dir} -name "*.keystore" -o -name "*.jks" -o -name "*.p12"`)
si vous avez des chemins complets et non des chemins partiels, il est beaucoup plus facile de les placer dans des tableaux comme celui-ci:
arr=(“/Users/ajay/Documents/keystore_and_p12files/"*.{keystore,p12,jks})