知ってる方がいらっしゃればご教授願えないでしょうか。
該当の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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア84505
0
ベストアンサー
こんな方法をご提案致します。
Bash
1 2# サンプルのディレクトリツリー 3> find TEST |xargs ls -ld 4drwxrwxr-x. 4 hoge hoge 4096 9月 26 11:05 2015 TEST 5drwxrwxr-x. 5 hoge hoge 4096 9月 26 11:05 2015 TEST/AAA 6drwxrwxr-x. 2 hoge hoge 4096 9月 26 11:06 2015 TEST/AAA/XXX 7-rw-rw-r--. 1 hoge hoge 0 9月 26 11:06 2015 TEST/AAA/XXX/file_03.txt 8drwxrwxr-x. 2 fuga fuga 4096 9月 26 11:04 2015 TEST/AAA/YYY 9drwxrwxr-x. 2 hoge hoge 4096 9月 26 11:06 2015 TEST/AAA/ZZZ 10-rw-rw-r--. 1 fuga fuga 0 9月 26 11:06 2015 TEST/AAA/ZZZ/file_04.txt 11-rw-rw-r--. 1 hoge hoge 0 9月 26 11:05 2015 TEST/AAA/file_02.txt 12drwxrwxr-x. 5 piyo piyo 4096 9月 26 11:14 2015 TEST/BBB 13drwxrwxr-x. 2 hoge hoge 4096 9月 26 11:06 2015 TEST/BBB/XXX 14-rw-rw-r--. 1 hoge hoge 0 9月 26 11:06 2015 TEST/BBB/XXX/file_05.txt 15-rw-rw-r--. 1 hoge hoge 0 9月 26 11:06 2015 TEST/BBB/XXX/file_06.txt 16-rw-rw-r--. 1 hoge hoge 0 9月 26 11:06 2015 TEST/BBB/XXX/file_07.txt 17drwxrwxr-x. 2 fuga fuga 4096 9月 26 11:07 2015 TEST/BBB/YYY 18-rw-rw-r--. 1 hoge hoge 0 9月 26 11:07 2015 TEST/BBB/YYY/file_08.txt 19drwxrwxr-x. 2 hoge hoge 4096 9月 26 11:04 2015 TEST/BBB/ZZZ 20-rw-r--r--. 1 piyo piyo 0 9月 26 11:14 2015 TEST/BBB/file_09.txt 21-rw-rw-r--. 1 hoge hoge 0 9月 26 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
総合スコア5936
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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/
参考:
- ls command: how can I get a recursive full-path listing, one line per file? http://stackoverflow.com/questions/1767384/
投稿2015/09/25 14:03
総合スコア22324
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/25 10:52