質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

3回答

2280閲覧

【UNIXコマンド】ファイル検索からのディレクトリ名のみ取得

prr4e

総合スコア73

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

1クリップ

投稿2015/09/25 10:29

知ってる方がいらっしゃればご教授願えないでしょうか。

該当のownerを持ったファイルを探しており、
対象ファイルが見つかったらディレクトリ名だけを取得

該当ownerのディレクトリも検索

例:
owner:hogeを検索しディレクトリ名を取得

find . ( -type d -o -type f ) -and -user hoge | xargs -ls -l

とすると

/usr/hoge test:user
/usr/hoge/test1.txt hoge:user
/usr/hoge/test2.txt hoge:user
※xxx:user は権限

上記が全て取得されます。
UNIX コマンドを使って下記だけを取得したいのですができますでしょうか。
/usr/hoge/ test:user

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

xargs -ls -lとはxargs ls -lの間違いですよね?

bash

1find . -type d -user hoge | xargs ls -ld 2find . -type f -user hoge | xargs -l1 dirname | sort -u | xargs ls -ld

投稿2015/09/25 10:47

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

prr4e

2015/09/25 10:52

xargs ls -l の間違いです。 すみません ありがとうございます。下記で行けそうです。 find . -type f -user hoge | xargs -l1 dirname | sort -u | xargs ls -ld
guest

0

ベストアンサー

こんな方法をご提案致します。

Bash

1 2# サンプルのディレクトリツリー 3> find TEST |xargs ls -ld 4drwxrwxr-x. 4 hoge hoge 4096 926 11:05 2015 TEST 5drwxrwxr-x. 5 hoge hoge 4096 926 11:05 2015 TEST/AAA 6drwxrwxr-x. 2 hoge hoge 4096 926 11:06 2015 TEST/AAA/XXX 7-rw-rw-r--. 1 hoge hoge 0 926 11:06 2015 TEST/AAA/XXX/file_03.txt 8drwxrwxr-x. 2 fuga fuga 4096 926 11:04 2015 TEST/AAA/YYY 9drwxrwxr-x. 2 hoge hoge 4096 926 11:06 2015 TEST/AAA/ZZZ 10-rw-rw-r--. 1 fuga fuga 0 926 11:06 2015 TEST/AAA/ZZZ/file_04.txt 11-rw-rw-r--. 1 hoge hoge 0 926 11:05 2015 TEST/AAA/file_02.txt 12drwxrwxr-x. 5 piyo piyo 4096 926 11:14 2015 TEST/BBB 13drwxrwxr-x. 2 hoge hoge 4096 926 11:06 2015 TEST/BBB/XXX 14-rw-rw-r--. 1 hoge hoge 0 926 11:06 2015 TEST/BBB/XXX/file_05.txt 15-rw-rw-r--. 1 hoge hoge 0 926 11:06 2015 TEST/BBB/XXX/file_06.txt 16-rw-rw-r--. 1 hoge hoge 0 926 11:06 2015 TEST/BBB/XXX/file_07.txt 17drwxrwxr-x. 2 fuga fuga 4096 926 11:07 2015 TEST/BBB/YYY 18-rw-rw-r--. 1 hoge hoge 0 926 11:07 2015 TEST/BBB/YYY/file_08.txt 19drwxrwxr-x. 2 hoge hoge 4096 926 11:04 2015 TEST/BBB/ZZZ 20-rw-r--r--. 1 piyo piyo 0 926 11:14 2015 TEST/BBB/file_09.txt 21-rw-rw-r--. 1 hoge hoge 0 926 11:05 2015 TEST/file_01.txt 22> 23 24# コマンド実行例 25> find TEST -user hoge |xargs ls -1dF |sed 's,[^/]*$,,' |LC_ALL=C sort -u |xargs ls -ld |awk '{print $10, $3":"$4}' 26TEST/ hoge:hoge 27TEST/AAA/ hoge:hoge 28TEST/AAA/XXX/ hoge:hoge 29TEST/AAA/ZZZ/ hoge:hoge 30TEST/BBB/XXX/ hoge:hoge 31TEST/BBB/YYY/ fuga:fuga 32TEST/BBB/ZZZ/ hoge:hoge 33>

ちなみに、この方法だと、所有者が「hoge」ならば空ディレクトリも拾えます。
それと、sortコマンドの前に付いている「LC_ALL=C」は、日本語環境でsortを早くするためのおまじないなので、対象のディレクトリツリーが小さい場合は無用です。

以下、簡単な解説。
find TEST -user hoge | # 対象ディレクトリツリーのパス取得
xargs ls -1dF | # ファイル/ディレクトリの区別のつく形式で ls
sed 's,[^/]*$,,' | # ファイル名を削除
LC_ALL=C sort -u | # 残ったディレクトリ名の重複削除
xargs ls -ld | # オーナー名を取得するためにもう一度 ls
awk '{print $10, $3":"$4}' # 結果を整形して出力

投稿2015/09/26 02:34

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

prr4e

2015/09/27 02:33

ありがとうございます。 この方法いいですね。 awkを使えば成果物として見易いものができそうです。 ありがとうございます。
guest

0

これはどうでしょう?

$ ls -ltd $(find . -type d -user root)

find . の部分を find pwd とすれば、フルパスで出力されます。

実行例;

$ ls -ltd $(find . -type d -user root) drwxr-xr-x 2 root staff 68 9 25 22:55 ./zzz/ruby/xxx/ $(find `pwd` -type d -user root) drwxr-xr-x 2 root staff 68 9 25 22:55 /Users/katoy/work/zzz/ruby/xxx/

参考:

投稿2015/09/25 14:03

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

prr4e

2015/09/27 02:31

ありがとうございます。 -d だけだとディレクトリしか取れないので、 他の方法を探すためこちらに質問した次第です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問