Je veux trouver un fichier puis entrer dans le répertoire qui le contient. J'ai essayé find /media/storage -name "Fedora" | xargs cd
mais bien sûr, j'ai l' is not a directory
erreur.
Comment puis-je entrer son répertoire parent avec une commande d'une ligne?
shopt -s globstar
, vous pourriez cd /media/storage/**/Fedora
, mais cela n'arrête pas d'évaluer le glob lors de la première correspondance (donc c'est plus lent que la solution de steeldriver. Pour une utilisation interactive, ce que je ferais normalement est d'atteindre la souris et de copier / coller le nom du répertoire, (et alt + backspace si nécessaire pour supprimer les composants du chemin de fuite que je ne voulais pas), mais si vous faites beaucoup de choses, je suppose qu'une fonction shell pourrait valoir la peine d'être créée.
xargs cd
ne peut pas fonctionner. cd
ne peut fonctionner que comme un shell intégré, car il doit modifier le contexte du shell lui-même. Il n'y a aucun moyen qu'un xargs
processus enfant puisse faire cela. IDK si c'est ce que vous vouliez dire "bien sûr", ou si le chemin qui find
imprime contient des espaces, qui sont divisés par xargs puisque vous ne l'avez pas utilisé -d \n
ou quoi que ce soit. Ou find -exec {} \;
.
cd
comme ça. cd
est un bash intégré, s'il cd
s'agissait d'une commande distincte, il changerait (son propre) répertoire, puis quitterait (vous ramenant au shell, qui est dans le même état que précédemment, aucun changement de répertoire).