あるディレクトリをfindし、そのディレクトリ自体の(ディレクトリの中ではなく)詳細情報を知る方法をどなたかご教授ください。
もしくは、-execオプションでforコマンドを実行する事が出来るのかどうか、についてもご存知の方おられたら教えて下さい。
シェルはsh, bash, csh, tcsh, kshです。
例えば今、
/aaa/bbb/dir1/ccc/ddd/dir2/
というディレクトリが有る時、
$find dir1 -type d -name dir2 -exec ls -l {} \;
とやると、
/aaa/bbb/dir1/ccc/ddd/dir2/
以下のファイルの詳細情報が出てしまいますが、そうではなく、
$ls -l /aaa/bbb/dir1/ccc/ddd/ | grep dir2
とした時と同じ情報を見たいのです。
勿論、
$ for dn in `find /dir1 -type d -name dir2 2>/dev/null` ; do
> ls -l $dn/.. | grep dir2
> done
とやれば、
drwxr-sr-x 2 hogehoge pekepeke 313344 Feb 20 14:37 dir2
と見る事は可能です。
これをコマンド1行でやる方法はないものでしょうか?
forでやるにしても、このようなfindの使い方は正しくない(-execでやるべき)と思われ、-execオプションでforコマンドを実行する方法(スクリプトを渡す等)について、ご存知の方いらっしゃいましたら教えて下さい。
xargsを使おうと思わなかったのだろうか?
ところで、このような単発質問スレは
以下略。
ls -ld
$find dir1 -type d -name dir2 -exec ls -ld {} \; 2>/dev/null
とすれば良いのでしたか。
manをちゃんと読んでなかった、という何度も注意されてるオチになってしまいました。
失礼しました & ありがとうございました >3 さん
ところで >2さん がおっしゃるように単発質問スレではなんですので、、、
-execオプションでスクリプト実行の方法(forに限定せず)
、、、についてはどうでしょうか?
まずforで試そうと
for dn in . ; do
ls -l $dn/.. | grep dir2
done
というスクリプトを作って
$ find /dir1 -type d -name dir2 -exec <スクリプト {} \;
を試してみたのですが、
find: 0652-083 /aaa/bbb/dir1/ccc/ddd/dir2/ を実行できません:: 指定されたアクションにはファイルのアクセス権限がありません。
となって駄目でした。
きっと"."コマンドの使い方が分かってないのだと思います。
長い上にくだらない。
6 :
名無しさん@お腹いっぱい。:02/02/20 17:27
execコマンドだとスクリプトを渡せるので、-execオプションでは一般的にどうなのかな、と…
バッククォートを使え。
自己レスです。
"."コマンドじゃなくて、$#とか$*の使い方を知りませんでした。
あと、execコマンドと-execオプションは違うのだから、<で渡すのではありませんでした。
for dn in S* ; do
ls -l $dn/.. | grep dir2
done
を
$ find /dir1 -type d -name dir2 -exec スクリプト {} \; 2>/dev/null
と渡せば無事出来ました。
新しいスレッドをもう上がられなかったので、自分で上げたfindのオプションネタのスレッドをもう少し伸ばしてみようと思いました。
findの-mtimeオプションで挟みうちで絞り込むやり方、ってありますか?
例えば1月, 2月更新のファイルを選ぶ時、
-mtimeでやればピンポイント決め撃ち(n)か、一方向に選別(+n, -n)されてしまうから、
$ ls -l kerokero | awk '{print $6,$7,$8}' | egrep 'Jan|Feb'
とやる方法しか分かりません。
これだとコマンドラインがどんどん長くなっていってしまって。。。
初心者スレに上げればよいものを、と思われるかも知れませんが、
TITLEをブラウザーで簡単に検索出来る事を嬉しく思う人もいると思いまして。。。
ちょっと待った。
>>TITLEをブラウザーで簡単に検索出来る事を嬉しく思う人もいると思いまして。。。
そうかもしれないが、原則的に、単発質問は避けるべきだよ。なぜかというと、
板ひとつとっても資源を使ってるわけだから(この意味、わかるよね?)。
だから、各板は
(11の続き)できるだけ狭い範囲の話題は避けるべき、でしょ。
>>11 「各スレは」か?
>>1 よ。
おれはスレ一覧が
10やそこらのレスで終わる単発質問で埋め尽くされるのを見たくない。
質問はくだ質、初心者スレでやれ。
最初にもっと汎用的な意味合いのタイトルにすれば良かった。
このスレッド、「findのオプションを使った小技ネタスレッド」って事にして伸ばす、ってのは駄目ですかね?
と言うのも実はですね、全発言タイトルをfind, exec, mtime, 検索, ...等の言葉で検索してみたのです(一応)が、無かったのでした。
アーカイブまでは検索してませんが…
なので、「findのオプションを使った小技ネタ」に関する話で別スレにしても構わないかも、と思いました。
・・・真性の馬鹿か find フェチのどちらかだな。
find フェチ、、、ですかね、ある種。
と言うのも、Windowsの検索でさえあんなに簡単に色んな検索が出来るのだから、
findだと何でも出来る筈、と思い込んだところから全ては始まったのです。
おまえさんのメールアドレスはわかったから、
せめて次からは代わりにsageと入れてくれ。
19 :
login:Penguin:02/02/27 00:16
>>16 それはそれで釜わんが、
UNIXのcommand一つ一つでスレッドを立ち上げたらきりがないから止めてくれ、
他の大切なスレッドが落ちてしまうのだ、という忠告を真摯に受け止めろ。
「くだらない質問」や「シェルスクリプト」スレッドでやるなら構わない。
といいつつageてしもた!
21 :
名無しさん@お腹いっぱい。:02/02/27 00:55
find dir1 -type d -name dir2 -ls
コマンド1つにつき1スレッドか
いったい何スレッドできるんだ??
あまりに多すぎて板分けても不可能だぞ(笑)
昔 cat スレがあったな。なぜか受け入れられてたけど。
UNIX コマンド板ですか?
roff 総合スレ その5
とかが立ってるんですかね。
そそ 他にはUNIX syscall板とLibrary板とか。。。
UNIX s1板 s1m板 s3板 s3N板なんてネーミングもいいね
じゃ俺はUNIX(6)番に常駐だ。
>>25 >UNIX syscall板とLibrary板
BSD系とSysV系でカテゴリ分けに関する論争が発生するぞ(w
# socket()はどこじゃとか
test
test
32 :
名無しさん@お腹いっぱい。:03/01/09 16:23
(^^)
(^^)
あぼーん
あぼーん
37 :
名無しさん@Meadow:03/06/01 20:49
find の -exec オプションの中では、
パイプやリダイレクト使えないんだね…
あぼーん
40 :
名無しさん@お腹いっぱい。:03/11/07 12:37
さいみんじゅつ
あなたはサガリマスサガリマスサガリマス
41 :
名無しさん@お腹いっぱい。:04/10/07 21:27:27
みんな!おひさしぶり!!
42 :
名無しさん@お腹いっぱい。:2005/10/06(木) 22:22:37
>1-26
レスつけるの飽きたのでこのへんで書き込むよ
>27
UNIX の歴史は、分裂と衰退しかないからねぇ。
どんな歴史もそうであるように。
>30
トリップが8桁?懐かしいなぁ
>32
なにってっかんねーよ
>33-34
(^^)
>37
そーなんだ?
でも xargs つかえばいいじゃん。
>38
氏んぢゃってください、だとお?
よくもそんなことが言えるな、このヒトデナシが。
>40
あああああ、サガってしまう。劇ヤバなので上ゲてやるぅ。
>41
おひさ!
って1時間もたってないけどね
43 :
>42:2005/10/06(木) 22:40:37
だせっ。1年近く間違えた……
44 :
名無しさん@お腹いっぱい。:2006/08/21(月) 23:55:31
簡単に言うと糞スレをあげて、みんなに見てもらう。
そうすると活気が沸く。
ただそれだけ。