Shell

如何使用 find 轉到該文件的目錄

  • October 25, 2020

我想找到一個文件,然後進入包含它的目錄。我試過find /media/storage -name "Fedora" | xargs cd了,但當然,我is not a directory犯了錯誤。

如何使用一行命令進入其父目錄?

至少如果你有 GNU find,你可以-printf '%h'用來獲取目錄

      %h     Leading directories of file's name (all but the last ele‐
             ment).  If the file name contains no slashes (since it is
             in  the  current  directory)  the %h specifier expands to
             ".".

所以你可能會做

cd "$(find /media/storage -name "Fedora" -printf '%h' -quit)"

在多個文件匹配的情況下,-quit應該防止多個參數cd

類似於steeldriver 的解決方案,但結合使用-execdir(如果您find支持它,如 GNU 或 FreeBSD 的findpwd

cd "$(find /media/storage -name "Fedora" -execdir pwd \; -quit)"

-quit是可選的,以防只有一個結果並且爬取整個目錄沒有問題。在 NetBSD-exit上它存在,而在 OpenBSD 上它不存在。

引用自:https://unix.stackexchange.com/questions/337457