Je veux trouver un fichier puis entrer dans le répertoire qui le contient. J'ai essayé find /media/storage -name "Fedora" | xargs cdmais bien sûr, j'ai l' is not a directoryerreur.
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 cdne peut pas fonctionner. cdne 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 xargsprocessus enfant puisse faire cela. IDK si c'est ce que vous vouliez dire "bien sûr", ou si le chemin qui findimprime contient des espaces, qui sont divisés par xargs puisque vous ne l'avez pas utilisé -d \nou quoi que ce soit. Ou find -exec {} \;.
cdcomme ça. cdest un bash intégré, s'il cds'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).