Linuxでアクセス許可を持つファイルの完全な絶対パスを再帰的に一覧表示する


7

私は少しオンラインで検索しましたが、すべてのファイルを絶対パスと許可で再帰的にリストする方法を見つけようとしています。私は私ができるように、これをやりたいgrepように、私が欲しいものを私は、コマンドを実行したとき、私はちょうど一致するファイル、そのアクセス権、およびそれらの完全なパスを得ることができるように、:

<search command> | grep file.name

出力:

/home/current/Desktop/file.name
/etc/program/src/file.name

私はlsそれが最も速いので使用したいと思います、そして私は入力します:

ls -alR $PWD/

しかし、これはファイルのパスを表示しないためgrep、出力を行った場合、ファイルのアクセス許可は表示されますが、元のディレクトリは表示されません。

ls統合して使用しfindgrep希望する形式で出力を取得できます。次のようなものを使用できます。

ls -ault `find $PWD/ -type f` | grep file.name

しかし、これは非常に遅いです。2つのコマンドが実際に実行されているためだと思います。

またはなしで使用findするlsgrep、高速になりますが、次のように入力する必要があります。

find $PWD/ -type f -name file.name -printf '%M %u %g %s\t%a\t%p\r\n'

これにより、すてきなフォーマットが得られます(ユーザー、グループ、サイズ、およびアクセスの最終日も含まれます。これらは役立ちます)。しかし、トンと入力すると、それは確かに使用するのと同じ速さではないlsgrep

私がやろうとしていることを使うよりも速くする方法はありますfindか?


$ PWDが巨大な場合、最後のfindコマンドよりも速い方法はありません。ところで、-a-typeと-nameの間に(および)を追加したい場合がありますか?または、おそらくシングル-nameで十分でしょうか?
ケント

回答:


9

というよりもlsfind試してみてくださいtree。具体的にtree -ifpugDs $PWDはあなたが望むものを与える必要があります。

-if インデント行を削除し、パスを出力します

-p 権限を出力します

-ug ユーザーとグループを出力します

-D 変更時刻を出力します

-s 印刷サイズ


素晴らしい、これはまさに私がやろうとしていることのようです。これは<code> ls </ code>と同じくらい高速です。<code> grep </ code>を使用して、表示しようとしている行を表示できます。ありがとう!

喜んでお手伝いします:)

3

それを入力することが問題である場合、あなたがすでに持っているものを関数に入れることについてはどうですか:

myspecialfinder() {
  find $PWD/ -type f -name "$1" -printf '%M %u %g %s\t%a\t%p\r\n'
}

あなたはそれを使用します

myspecialfinder file.name

これは心に留めておくと良いです-これを.bashrcファイルに入れて、ログオンするたびにこの機能を既に利用できるようにすることができます。


0
--tree -ifpugDs $PWD-- etc.

とても近い。問題はで$PWD、Unixスタイルのファイル名ではなく実際のファイル名がある場合、つまりスペースがない場合、無駄なゴミになります。EG NTFSなどのファイルシステムで動作させるには、$ PWDを引用する必要があります。

私はラボでバークレー/サンのユーザーだったので、Cシェルを使用しますが、bashでも同じ考えが当てはまります。

tree -if "$PWD"

あなたのファイル名が

/home/he/Documents/00 - Writing/02 The Rapture of the Maiden/0 - Text/25th/Rapture, pt 1-4, ch 01-20 old.txt, 

それはスペースにぶつかるとすぐにがらくたになりません。

私は英語のファイル名の大ファンです。つまり、RSFunc97Stat.txtのようなものではありません。おそらく、ほとんどのプログラマーとは異なり、私は通常の書き込み速度で10桁の数字を入力できるからです。作曲できる速さで1分あたり40ワード以上入力する必要がある人はほとんどいません。私が一緒に仕事をしたほとんどの技術者は、片手で片手で二人で片方の方法を使用し、彼らは短い変数名を使用したい、コメントしたくない、そして一般的に数えられないユーザーdocを支援します。また、それはあなたがそれを言うために8文字しか持っていなかった時代からの古い習慣です。

最近では、「O'Reilly's Army.txt」でもすべてのファイル名をサポートする必要があります。「O'Reilly」テストと呼ばれる、作成したすべてのデータベースにデータベーステスト項目もあります。多くのプログラムは、テキストフィールドに引用符や先頭のペースなどがあると完全に失敗しました。朗報は、tcshがファイルを自動補完し、正しい構造に従ってファイルを引用することです。


0

find <path> -lsトリックを行います。私は同じものを探していましたが、treeインストールしていませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.