検索ファイルfind *
との違いは何ですか?find ~
端末で現在の作業ディレクトリを開くと、root
端末で
root@devils-ey3:~# find * -print -quit
~
同じディレクトリに
root@devils-ey3:~# find ~ -print -quit
/root
ただし、変更するとpwd
出力はfind ~ -print -quit
以前と同じですが、他の出力は変更されます。ファイル検索は何を*
しますか?~
ベストアンサー1
の基本形式find
は
find WHERE WHAT
したがって、find *
と*
見なされますWHERE
。今*
それはワイルドカードです。現在のディレクトリ内のすべてのエントリと一致します(デフォルトで始まるファイル/ディレクトリを除く.
)。 Windowsに該当するのはです*.*
。*
拡大するこれを説明するために、find
次のディレクトリを検討してください。
$ ls
file file2
set -x
デバッグ情報を有効にしてコマンドを実行すると、find
次のようになります。
$ find * -print -quit
+ find file file2 -print -quit
file
上記のように、*
ディレクトリ内のすべてのファイルに展開すると、実際に実行されるのは次のとおりです。
find file file2 -print -quit
そのため、-quit
検索を指定したファイルの最初のファイル名を印刷して終了します。あなたの場合は、というファイルまたはディレクトリがあるように見え、~
それが印刷されます。
ただし、チルダ(~
)には特別な意味もあります。これはあなたのディレクトリへのショートカットです$HOME
:
$ echo ~
/home/terdon
したがってfind ~
、rootとして実行すると、~
これに拡張され、/home/root
実際に実行されるコマンドは次のようになります。
# find ~ -print -quit
+ find /root -print -quit
/root
find
繰り返しますが、特定の場所からファイルまたはディレクトリを検索し、最初の項目を印刷して終了することを意味します。最初に一致するファイルまたはディレクトリが/root
それ自体であるため、これが印刷されます。