68user's page 掲示板

Prev< No. 4900〜4907> Next  [最新発言に戻る] [過去ログ一覧]
No. 4900 # 68user 2008/04/02 (水) 19:10:27
さきほどお問い合わせページよりご指摘いただきました、ジャンル一覧リンク切れの件、
修正しました。ご指摘ありがとうございます>連絡いただいた方

No. 4901 # 68user 2008/04/18 (金) 13:53:44
2年半ぶりの人材募集です。
http://x68000.q-e-d.net/~68user/tmp/job2.html

No. 4902 # TKC 2008/05/02 (金) 14:09:57
こんにちわ。
findコマンドについて教えてください。

■要件
カレントディレクトリに存在する31日以前のファイル&ディレクトリの削除を実施したい

■コマンド
find ./ -mtime +31 -exec ls {} \; -exec rm -r {} \; >> test.log

■結果
./20070101.trc
find: ./aaa: No such file or directory

■質問1
カレントディレクトリに削除対象となる日付のファイル20070101.trcとディレクトリaaaを配置しています。
削除ファイルの一覧を取得したいため-exec ls {} \;を使用したのですが、
ログには./20070101.trcしか記載がありません。
ディレクトリも表示させるには何かオプションが必要なのでしょうか?

■質問2
実行結果としては削除は行われているのですが戻り値がエラーとなっています。
find: ./aaa: No such file or directoryの部分を指していると思うのですが、
削除後にfindしているように見受けられますがこのエラーの出力原因はなんでしょうか?

1と2の解決方法がありましたら教えてください。
宜しくお願いします。

No. 4903 # 68user 2008/05/02 (金) 16:00:22
>>4902 TKC
まず、-exec の代わりに -ok を使って何が実行されているか確認しましょう。

> ディレクトリも表示させるには何かオプションが必要なのでしょうか?
./aaa/ の中身が空ではないですか? 空であれば ls ./aaa しても何も
表示されないと思います。

> 削除後にfindしているように見受けられますがこのエラーの出力原因は
> なんでしょうか?
find はディレクトリを下降してファイルを探しますが、おそらく
ディレクトリを削除した後にそのディレクトリに下りようとしている
のではないでしょうか。-prune を組み合わせれば下りないように
できるかもしれません (試していません)。

No. 4904 # TKC 2008/05/02 (金) 16:38:38
>>4903 68userさん
-okを使用して確認しました。
ご察しの通り./aaa配下が空のため< ls ... ./aaa >となり
結果的にログに./aaaが出力されていないことがわかりました。

findのエラー原因はやはり削除後に配下に移動しているものと思われます。
rmにデータが渡る前に-pruneを使い解消されました。

最終的には下記で行いたい処理ができました。
find ./ -mtime +31 -prune -exec ls -d {} \; -exec rm -r {} \;

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

No. 4906 # hoge 2008/05/19 (月) 00:21:11
いつもこちらにはお世話になってます。

flexについての指摘です。
http://x68000.q-e-d.net/~68user/unix/pickup?flex

GNUでは作成・配布してないようです。
http://ftp.gnu.org/gnu/flex/flex.README

No. 4907 # 68user 2008/05/19 (月) 23:44:38
>>4906 hoge
> GNUでは作成・配布してないようです。
そうなんですか。知りませんでした。

ftp://ftp.gnu.org/non-gnu/flex/flex.README
      Flex is a free implementation of the well-known Lex program for lexical
      analysis. Since it is not (and never was) a GNU package, we don't
      distribute it here. Please see http://flex.sourceforge.net for the
      latest release and information.


flex-2.5.4 (1997年リリース) の README
      Note that flex is distributed under a copyright very similar to that of
      BSD Unix, and not under the GNU General Public License (GPL), except for
      the "configure" script, which is covered by the GPL.

などを見るに、確かに flex が GNU ではないようですね。

しかしこの書籍
    http://www.ascii.co.jp/books/books/detail/4-7561-3097-6.shtml
        Flex入門
        シリーズ:GNUシリーズ
        GNUのツールの1つとして広く使用されているGNUのLexical Scanner Generatorで
        あるFlexの解説書。豊富な例とともに機能を詳細解説
はどうなんですかね。

wikipedia(en) には
    http://en.wikipedia.org/wiki/Flex_lexical_analyser
        Flex is a non-GNU project, but the GNU project developed the manual for Flex.
とありますが、「GNU が作った flex のマニュアル」の翻訳が上記の「Flex 入門」
だったりするんでしょうか。

Prev< No. 4900〜4907> Next  [最新発言に戻る] [過去ログ一覧]