
これを使用してディレクトリ内のすべてのファイルを一覧表示し、自分が持っているファイルのみを表示できます。それでは、最高のシェルコマンド「oneliner」とは何ですか?
答え1
短い文章は次のとおりです。
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 {} +
(この場合、ディレクトリを内容ではなくディレクトリ自体としてリスト-d
するにはフラグが必要です。)ls
答え2
次のコマンドを使用してください
[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
注:2> / dev / nullはエラー出力を無効にします。
答え3
出力形式を指定しないため、lsとgrepを使用してこれを行うこともできます。
ls -lG | grep username
まず、-lパラメーターを指定してlsを使用してユーザー名とグループ名のリストを取得します。
次に、-Gパラメーターを使用して結果からグループ名を削除します。
その後、それをgrepに送信し、目的のユーザー名ですべての結果を取得します。
編集する:コメントで指摘したように、これは金庫ではありませんあるいは、防弾ソリューションですが、状況に応じて迅速で汚れたソリューションになることもあります。インタラクティブには許可できますが、どのスクリプトでも使用しないでください。
答え4
それとしてzsh
使用できますグローバル予選u
:
u
IDユーザーIDが所有するファイルIDそれが数字なら。そうでなければ、IDユーザー名の指定: " "の後の文字は
u
区切り文字として扱われ、その文字と一致する次の区切り文字の間の文字列はユーザー名として扱われます。開始区切り記号 '[
'、'{
'、および'<
' はそれぞれ最終区切り記号 ']
'、'}
'、および '>
' と一致し、他の文字はそれ自体が一致します.選択したファイルは、このユーザーが所有するファイルです。たとえば、 "u:foo:
"または "u[foo]
"foo
はユーザー " "が所有するファイルを選択します。
たとえば、ユーザーID
print -rl ./*(u1027)
またはユーザー名を使用してください
print -rl ./*(u_yourusernamegoeshere_)
UID
1027
通常どおり、これを他の修飾子、修飾子などと組み合わせることができます。たとえば、非表示に関係なく、ユーザーが所有して並べ替えた一般ファイルを一覧表示するなどの操作を実行できますmtime
。
print -rl ./*(.Domu1027)