web-dev-qa-db-ja.com

自分が所有するファイルのみを一覧表示する最良の方法

ディレクトリ内のすべてのファイルを一覧表示し、自分が所有しているファイルのみを表示するために使用できる、最も優れたシェルコマンド「ワンライナー」は何でしょうか。

8
James

短いワンライナーは次のようになります:

_find . -maxdepth 1 -user $USER
_

現在のディレクトリを表示している場合は、_._を省略できます。 _$USER_が使用可能かどうかわからない場合は、_$LOGNAME_または$(whoami)に置き換えることができます。

_-ls_を追加して、ファイルの詳細を表示します。例:

_find / -maxdepth 1 -user root -ls
_

カスタムフラグをlsに提供する場合は、_-exec_を介して使用できます。

_find / -maxdepth 1 -user root -exec ls -ld {} +
_

(その場合、lsへの_-d_フラグは、ディレクトリをそのコンテンツとしてではなく、それ自体としてリストするために必要です。)

7
Arminius

以下のコマンドを使用

[username@localhost~]$ find / -user username -exec ls -l {} \; 2>/dev/null

ユーザー名が所有するシステム全体のすべてのファイルを検索します。特定のディレクトリから見つけた場合は、場所/を置き換えてください。

[username@localhost~]$ find /path/of/direcotry -user username -exec ls -l {} \; 2>/dev/null

NB:2>/dev/nullはエラー出力を無効にします。

3
Rakib
for i in ./*; do [ -f "$i" ] && [ -O "$i" ] && echo "$i"; done

find . ! -name . -Prune -user "$(who -m)" -type f

所有している現在のディレクトリにあるプレーンファイルを一覧表示する方法は2つあります。

0
user218374

出力の形式を指定しなかったので、lsとgrepを使用してこれを行うこともできます。

ls -lG | grep username

最初にlsを-lパラメーターと共に使用して、ユーザー名とグループ名を含むリストを取得します。

次に、-Gパラメーターを使用して、結果からグループ名をプルーニングします。

その後、それをgrepにパイプして、すべての結果を目的のユーザー名で取得します。

[〜#〜] edit [〜#〜]:コメントで指摘されているように、これは安全ではないまたは防弾ソリューションです-ただし、状況によっては、早くて汚いものかもしれません。対話的には許容できるかもしれませんが、スクリプトでは使用しないでください。

0
user6075516

zshでは、 glob qualifier u を使用してそれを行うことができます。

uid

ユーザーIDidが所有するファイル(番号の場合)。それ以外の場合、idはユーザー名を指定します。'u 'の後の文字は区切り文字として使用され、その文字列と次に一致する区切り文字がユーザー名として使用されます。開始セパレーター「[」、「{」、および「<」は、それぞれ最終セパレーター「]」、「}」、および「>」と一致します。他の文字はそれ自体と一致します。選択したファイルは、このユーザーが所有するファイルです。たとえば、「u:foo:」または「u[foo]」は、ユーザー「foo」が所有するファイルを選択します。

そのため、たとえばユーザーID

print -rl ./*(u1027)

またはユーザー名付き

print -rl ./*(u_yourusernamegoeshere_)

いつものように、他の修飾子、修飾子などと組み合わせることができます。 UID1027を使用してユーザーが所有し、mtimeで並べ替えられた、非表示かどうかに関係なく、通常のファイルのみを一覧表示するには:

print -rl ./*(.Domu1027)
0
don_crissti