1819809 メンバー
2865 オンライン
109607 解決策
新規ポスト

findについて

 
りま
アドバイザー

findについて

お世話になっております。

findで指定ディレクトリの下に存在するディレクトリを検索してファイルに出力するようにしています。

find -name '*' -type d -print >

この場合、指定したディレクトリの下にシンボリックリンクが含まれる場合、エラー(find: * ファイルの情報を読めません。)が画面に出力されてしまいます。

このエラーを出力させない方法をご存知の方おりましたら教えてください。

マニュアルなどを見てみたのですが、方法がわかりませんでした・・。

また、上記のコマンドを実行するとディレクトリが作成順に出力されてしまいます。

この場合に出力されるファイル名をファイル名でソートして出力させたいのですが、こちらもわかる方おりましたら教えてください。

よろしくお願いいたします。
4件の返信4
nt
貴重なコントリビューター

findについて

エラーが再現できないのですが、

find dir -type d -print

ではだめですか?

> ファイル名でソートして出力させたい

普通に

find ... | sort

ではだめですか?

hazelwood
信頼あるコントリビューター

findについて

-name '*'は、すべてのファイル名にマッチするので、指定しても意味がないと思います。

(-> ntさんが最初に示している代案になります。)

> 上記のコマンドを実行するとディレクトリが作成順

> に出力されてしまいます。

-type d を指定しているので、ディレクトリだけ表示されます。

ファイルだけを表示させたいのなら、-type fです。
りま
アドバイザー

findについて

nt様

いつもお世話になっております。

エラーの方はディレクトリを削除して、再作成し直したら出なくなってしまいました・・。

お手数おかけして申し訳ありません。

-name '*' は指定しなくてもよいのですね。

ファイル名のソートの方も期待通りの動きになりました!

ありがとうございます。

りま
アドバイザー

findについて

hazelwood様

-name '*' は必ずつけないといけないのかと思ってましたがつけなくても良いのですね。

勉強になりました。ありがとうございます。

>-type d を指定しているので、ディレクトリだけ表示されます。

>ファイルだけを表示させたいのなら、-type fです。

すみません。私の書き方が間違っていました。

>この場合に出力されるファイル名をファイル名でソートして出力させたい

ではなく、

この場合に出力されるディレクトリ名をディレクトリ名でソートして出力させたい

です。

誤解を与えてしまいすみませんでした。

nt様に教えていただいた方法でこちらも実現することができました。

ありがとうございました。