AIXでfindコマンドを使用して現在のディレクトリから1日より古いファイルのみを取得する方法(サブディレクトリとそのファイルを除く)は何ですか?
答え1
find
Unixでの実装に述語-maxdepth
(非標準ですが一般的に使用可能)があると仮定すると、次のfind
コマンドはこれを行います。
find . -maxdepth 1 -type f -mtime +0
これにより、24時間以上前の修正タイムスタンプとともに、通常のファイル(ディレクトリ、ソケット、名前付きパイプなどではない)の名前が端末に印刷されます。
-maxdepth
利用できない場合は検討してください
find . ! -name . -prune -type f -mtime +0 -print
これは次のことを意味します。
find
現在報告している場合いいえ.
(! -name .
)、現在のディレクトリ- 打つ
find
()検索パス-prune
。これもfind
止まる考えるとサブディレクトリを入力してください。 - ファイルが一般ファイル(
-type f
)の場合 - 修正タイムスタンプが24時間(
-mtime +0
)より古い場合 - 私たちが見つけたものの名前を書いてください(
-print
)。
情報-mtime +0
: AIX システムでは、以下を参照してください。セマンティックに関する注意-mtime
-mtime +0
またはを使用するかどうかを決定します-mtime +1
。 UNIX03の動作が必要な場合は、修正タイムスタンプが24時間より古いファイル検索を使用する必要があります(そしてマニュアルに記載されているように環境変数をWarに設定する必要があります-mtime +0
)XPG_SUS_ENV
。ON
XPG_UNIX98
OFF
デフォルトでは、find
出力はパス名ファイルが見つかりました。つまり、./
上記のコマンドでプレフィックスが付いたファイル名を取得します。これを望まない場合は、basename
見つかったファイル名ごとにユーティリティを呼び出す必要があります。
次のことができます。
find . ! -name . -prune -type f -mtime +0 -exec basename {} \;
コメントからこのファイルを圧縮したいと言いました。このためにユーティリティを呼び出す必要はありませんbasename
。ただ呼び出すgzip
(または使用したい圧縮ユーティリティ):
find . ! -name . -prune -type f -mtime +0 -exec gzip {} +
これらのファイルを使用して追加のタスクを実行するかどうかに応じて、このサイトで同様の質問を見つけることができます。検索結果を繰り返すのはなぜ悪い習慣ですか?
また関連: