findコマンドを使用してファイルを取得する方法

findコマンドを使用してファイルを取得する方法

AIXでfindコマンドを使用して現在のディレクトリから1日より古いファイルのみを取得する方法(サブディレクトリとそのファイルを除く)は何ですか?

答え1

findUnixでの実装に述語-maxdepth(非標準ですが一般的に使用可能)があると仮定すると、次のfindコマンドはこれを行います。

find . -maxdepth 1 -type f -mtime +0

これにより、24時間以上前の修正タイムスタンプとともに、通常のファイル(ディレクトリ、ソケット、名前付きパイプなどではない)の名前が端末に印刷されます。

-maxdepth利用できない場合は検討してください

find . ! -name . -prune -type f -mtime +0 -print

これは次のことを意味します。

  1. find現在報告している場合いいえ .( ! -name .)、現在のディレクトリ
  2. 打つfind()検索パス-prune。これもfind止まる考えるとサブディレクトリを入力してください。
  3. ファイルが一般ファイル(-type f)の場合
  4. 修正タイムスタンプが24時間(-mtime +0)より古い場合
  5. 私たちが見つけたものの名前を書いてください(-print)。

情報-mtime +0: AIX システムでは、以下を参照してください。セマンティックに関する注意-mtime-mtime +0またはを使用するかどうかを決定します-mtime +1。 UNIX03の動作が必要な場合は、修正タイムスタンプが24時間より古いファイル検索を使用する必要があります(そしてマニュアルに記載されているように環境変数をWarに設定する必要があります-mtime +0XPG_SUS_ENVONXPG_UNIX98OFF

デフォルトでは、find出力はパス名ファイルが見つかりました。つまり、./上記のコマンドでプレフィックスが付いたファイル名を取得します。これを望まない場合は、basename見つかったファイル名ごとにユーティリティを呼び出す必要があります。

次のことができます。

find . ! -name . -prune -type f -mtime +0 -exec basename {} \;

コメントからこのファイルを圧縮したいと言いました。このためにユーティリティを呼び出す必要はありませんbasename。ただ呼び出すgzip(または使用したい圧縮ユーティリティ):

find . ! -name . -prune -type f -mtime +0 -exec gzip {} +

これらのファイルを使用して追加のタスクを実行するかどうかに応じて、このサイトで同様の質問を見つけることができます。検索結果を繰り返すのはなぜ悪い習慣ですか?

また関連:

関連情報