findコマンドを使用してディレクトリ内のすべてのファイルを検索したいと思います。
find . * -exec ll {} \;
結果には、ファイルごとに4つの(!)結果が表示されます。
file123
./test/file123
file123
test/file123
2番目の結果のみを表示するには、find-out-of-the-box-commandを使用できますか./test/file123
(したがってそのようなものを使用しません| grep '^\./'
)?
私は最新バージョンのHP / UXを使用しています。
答え1
find . * -exec ll {} \;
サブディレクトリを含む.
現在のディレクトリにある隠しファイル(シェルによって拡張された)のリストと一緒に渡されます(これらのファイルのいずれかが、で始まる、または名前またはファイルがある場合... )エラーが報告されます)。*
test
-
!
(
)
find
したがって、find
ファイルを再帰的に検索するように指示します。したがって、ファイルは2回、2回見つかります。.
test
find
test
test/file123
ll
ls -l
これは、ファイルの詳細またはディレクトリタイプのファイルを一覧表示し、そのディレクトリ内のすべてのファイルの詳細を一覧表示するツールであるスクリプトだと思います(-d
オプションを渡さない限り)。
soは引数としてll
呼び出されます。この場合、ifはその内容にファイルの詳細(含まれている)を一覧表示します。./test
test
test/file
./test/file123
とで呼び出されますtest/file123
。
希望する場所は次のとおりです。
find . -exec ls -ld {} +
(使用は、+
複数のファイルがより効率的な引数として渡され、ls
ファイルのリストもls
ソートできることを意味します。)
ビットリストで表される述語をfind
サポートすることもできます。-ls
ls -lsid
find . -ls
答え2
find
現在のディレクトリ(.
)と*
そのディレクトリに展開されているすべての項目を検索するように要求するため、4行の出力が表示されます。
現在のディレクトリの場合、現在のディレクトリ、ディレクトリ、およびディレクトリのファイルとなる検索内容を引き続きfind
呼び出します。これは2回リストされます。ll
test
test
file123
*
次に、展開されたすべての項目(ディレクトリ)を検索しますtest
。これで再利用できll
、test
その中にあるファイルを使用できるようになります。ファイルが再度 2 回リストされます。
代わりに一般的なファイルを見つけるにはを使用してください。デフォルトでは検索されたパス名がリストされているため、結果を取得するために(または)を-type f
使用する必要はありません。また、現在のディレクトリ(または)を検索パスとして使用してください。ll
ls
find
find
test
find . -type f
正しい名前のファイルを探している場合file123
:
find . -type f -name 'file123'
ls -l
パス名の代わりに同様の出力が必要な場合:
find . -type f -name 'file123' -ls
答え3
検索はすべてのディレクトリで繰り返しfind
実行されます。
検索はファイルだけでなくディレクトリも返します!
テストディレクトリ内のすべてのファイルを一覧表示するには、次のコマンドだけが必要です。
find test/ -type f
また、私はあなたが何を達成しようとしているのかわかりませんが、find
マンページをチェックしています-exec ll {} \;
。find
)