単純検索コマンドが機能しない

単純検索コマンドが機能しない

私はLinuxに初めてアクセスし、現在次のコマンドを実行しようとしています。

find ~ -name apt.no

apt.noとしてリストされている別のディレクトリを探していますmontrose-files

シェルは応答せずに単に新しい行を生成します。なぜこれが結果を出せないのかを説明できる人はいますか?

bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █

ここに画像の説明を入力してください。

ベストアンサー1

コマンドは、ディレクトリとその下のディレクトリから呼び出されたファイルまたはディレクトリを探します。find ~ -name apt.no(自分のホームディレクトリを表します。)apt.no$HOME~

自分のホームディレクトリにないと検索されず、ターゲットmontrose-filesファイルが見つかりません。たとえば、montrose-files別のパスの下にある場合は、そのパスを指定する必要があります。

find /path/to/montrose-files -name 'apt.no' -print

混乱しても、以前にホームディレクトリにシンボリックリンクを作成した場合、デフォルトではシンボリックリンクに従わないため、そのmontrose-filesシンボリックリンクも検索されません。find次の 2 つの方法のいずれかでこの問題を解決できます。

find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print

最初の方法はfindシンボリックfollowリンクを伝えます。これは一部のバージョンではfind間違ったアプローチかもしれません。なぜなら、シンボリックリンクがループを指している場合、構造を何度も繰り返すことができるからです。

2番目のアプローチでは、末尾のスラッシュを追加して、シンボリックリンクが実際のディレクトリターゲットに解決されるように強制します。

最後に、すべての場合に私が探しているファイル名を引用していることに注意してください。単純なケースでは違いはありませんが、ファイル名の不明な部分(たとえば)に一致させるためにワイルドカードを使用し始めるときは、ワイルドカードを取得するapt.*前にシェルで処理されないように単一引用符を使用する必要があります。 。findそれらを)。主張を引用する習慣を挙げることをお勧めします。


*技術的にはすべてのプロジェクトと一致しますが、ホームディレクトリにパイプ、ソケット、またはデバイスノードがある可能性はほとんどありません。

おすすめ記事