LRUスクリプトを作成していますが、20時間作業した後に修正できない繰り返しパターンの問題に直面しました。
アクセス時間(--time = atime)でソートされたファイルを表示するコマンドが必要です。また、奥行きをコントロールしたいのですが、そうすることができなければ大丈夫です。
- メインディレクトリ:
- ファイル1
- カタログ 1:
- ファイル1
- ファイル2
- サブディレクトリ1:
- ファイル1
- ファイル2
- カタログ 2:
- ファイル1
- ファイル2
- サブディレクトリ2:
- ファイル1
- ファイル2
- サブディレクトリ 3:
- ファイル1
ディレクトリを除いて、アクセス時間ごとにファイルのみをソートしたいと思います。
良い
/ホーム/ディレクトリ1/ファイル1
/ホーム/ファイル1
/ホームディレクトリ/ディレクトリ1/サブディレクトリ1/ファイル2
/ホームディレクトリ/ディレクトリ2/サブディレクトリ2/サブディレクトリ3/ファイル1
など..
ベストアンサー1
同様の問題を解決するための6つの非常に一般的なツールがあります。
find
、特定の項目に一致するファイルまたはディレクトリを探します。-mindepth
オプションは-maxdepth
ファイルシステムツリー内のコマンドの深さを制御します(その深さは指定された名前に基づいて常に0です)。この
-type
オプションは、ファイル、ディレクトリ、シンボリックリンク、またはデバイスの考慮を制限するのに役立ちます。この
-printf
オプションは、コマンドに一致する名前(ディレクトリエントリ)に関する情報を目的の形式で印刷させるために便利です。特に%TY%Tm%Td %TT %p\n
、フォーマットを使用して最後の変更日時だけでなく、各行の各一致の完全なパスと名前を印刷することが好きですYYYYMMDD HH:MM:SS.sss PATH
。この形式が正しくソートされていることがわかります。最後のアクセスの場合を使用してください。ただし、マウントオプションを使用すると%AY%Am%Ad %AT %p\n
アクセスタイムスタンプはまったく記録されず、マウントオプションを使用すると変更後の最初のアクセスでのみアクセスタイムスタンプが変更されます。最も最近使用された検査は信頼できません。 (ただし、最近修正されたリストはかなり信頼できます。ユーザーはタイムスタンプを手動で変更できますが、そうでない場合は自動的に保持されます。)noatime
relatime
sort
出力をソートします。、、、
-d
およびオプションは項目を比較する方法を定義し、この-g
オプションは順序をランダムにします。-h
-M
-n
-R
この
-r
オプションを使用すると、ソート順を逆に置き換えることができます(上記のオプションの1つで使用されます)。この
-t
オプションは、デフォルトでスペース(スペースとタブ)が列を区切る方法をオーバーライドします。この
-k
オプションを使用すると、各行のどの部分がデフォルトでソートキーと見なされるか、行全体が考慮されるかを定義できます。uniq
通常、ソート後に複数の連続した項目を1つにまとめて、一意の行のみを出力することができます。cut
出力の各行から特定の列のみを選択する最も簡単な方法です。この
-f
オプションは印刷するフィールドを選択します。 (デフォルトでは、最大1つのフィールド(区切り文字なし)を含む行が印刷されます。このオプションは-s
そのような行の印刷を抑制します。)この
-d
オプションを使用すると、フィールド定義をオーバーライドでき、デフォルトでは個々のフィールドは空です。awk
awk 言語の通訳者です。 awkスクリプトは基本的に次のコレクションです。行動、各行(すべての処理の前後または行(またはレコード)が特定の規則と一致する場合)に対して実行されるコードの断片。
この特定の問題は、単純なパイプラインで上記の3つのコマンドを使用して解決できます。find
ツリーの目的の深さからファイルを検索し、各ファイルのソート可能な日付と時刻を印刷し、出力をソートします。各行の日付と時刻部分は、各行の各ファイルへの相対パスのみを残します。