2011-03-12 8 views
0

J'ai quelques problèmes pour faire des commandes sur shell.
Mon problème est que je veux changer les répertoires plus spécifiquement à un répertoire que je ne connais pas mais qui contient le fichier nommé xxx. Comment puis-je changer directement dans le répertoire qui contient ce fichier? Si je connaissais les noms des répertoires qui contenaient ce fichier serait plus facile parce que je devais seulement utiliser cd ~/Nom du répertoire. Quelqu'un peut-il m'aider? grâceChanger de répertoire

+0

Quel système d'exploitation? Quel langage de programmation? Vous ne nous avez pas donné d'arrière-plan du tout. –

Répondre

1

Si vous ne savez pas où un fichier est, allez à la racine du système et trouver il:

cd/
find . -iname filename 
1

Dans plusieurs systèmes Linux, vous pouvez faire:

$ cd `find . -name "filename" | xargs dirname` 

Mais changez "nom de fichier" pour le fichier que vous voulez trouver.

0

BASH

cd `find . -name "*filename*" | head -1` 

Ce genre est d'une variation de réponse Qiau. Recherche le premier fichier qui contient la chaîne , le nom de fichier, puis remplacez le répertoire actuel par son emplacement.

* est une carte sauvage, il peut y avoir quelque chose avant et/ou après nom de fichier.

2

Si vous avez GNU find:

cd "$(find /startdir -name 'filename' -printf %h -quit)" 

Vous pouvez remplacer "/ startdir" avec un répertoire valide, par exemple /, . ou `~ /.

Si vous souhaitez cd dans un répertoire qui est dans le $PATH qui contient un fichier exécutable:

cd "$(dirname "$(type -P "filename")")" # Bash 

ou

cd "$(f=$(type -P "ksh"); echo "${f%/*}")" # Bash 

ou

cd "$(dirname "$(which "filename")")" 
Questions connexes