GNU/Linux >> Linux の 問題 >  >> Linux

ファイルを見つけて、Linux でそのディレクトリに cd します

以下はより安全なはずです:

cd -- "$(find / -name ls -type f -printf '%h' -quit)"

利点:

  • 二重ダッシュは、オプションとしてハイフンで始まるディレクトリ名の解釈を防ぎます (find はそのようなファイル名を生成しませんが、有害ではなく、同様の構成に必要になる可能性があります)
  • -name -type の前に確認してください 後者は時々 stat を必要とするのでチェックしてください
  • いいえ dirname %h であるため必須 指定子はすでにディレクトリ名を出力しています
  • -quit 最初のファイルが見つかった後に検索を停止するため、 head はありません 改行を含むディレクトリ名でスクリプトが失敗する原因となる必須

次のようなものを使用できます:

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _

これにより、最初の ls が検索されます 通常のファイルをそのディレクトリに変更します。

各ビットの機能について:

  • 検索は / から始まります 下方向に検索し、すべての通常のファイルを一覧表示します (-type f ) ls と呼ばれる (-name ls )。 find に追加できるものは他にもあります 取得するファイルをさらに制限します。
  • head -1 を通る配管 最初のもの以外はすべて除外されます。
  • $() コマンドの出力を取得して、別のコマンド ラインに出力する方法です。 コマンド
  • dirname 完全なファイル仕様を取り、パスビットを与えることができます.
  • cd そのディレクトリに移動するだけです。

各ビットを順番に実行すると、何が起こるかがわかります:

pax[/home/pax]> find / -type f -name ls
/usr/bin/ls

pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls

pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"

pax[/usr/bin]> _

Linux
  1. Linuxでファイルを見つける方法

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. Linuxで特定のファイルを提供するパッケージを見つける方法

  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. Linux のディレクトリにある最新のファイルを取得する

  3. Linux で別のユーザーのホーム ディレクトリからファイル/フォルダをコピーするにはどうすればよいですか?

  1. Linux –ファイルの作成日を見つける方法は?

  2. Linux – / net Directoryの目的は?

  3. Linux ファイル/ディレクトリのパーミッションチートシート