find コマンドは -exec ls を使用して別の出力を生成します。

find コマンドは -exec ls を使用して別の出力を生成します。

変更日に基づいてどのファイルが変更されるかを確認したいと思います。私のディレクトリは、複数レベルのサブディレクトリを持つことができるリストの一番上にあります。

ターミナルウィンドウで、次のコマンドを実行します。

find Program.8.koeb/ -mtime -10

過去10日間に変更されたファイルのリストを正しく生成します。ただし、findこのコマンドを使用して変更するファイルを確認するためにこのリストを照会するには、次のコマンドを実行します。

find Program.8.koebe/ -mtime -10 -exec ls -gotrhR {} \;

現在の作業ディレクトリ(サブディレクトリを含む)のディレクトリと、ルックfindに割り当てられている指定されたディレクトリ内のすべてのファイルの長いリストを生成します。したがって、-exec ls -gotrhR {} \;次のような出力が生成されるようです。

find . -mtime -10 -exec ls -gotrhR {} \;

これは私の意図ではありません。

答え1

-exec ls -l {}にこれらのディレクトリが含まれてリストされているため、「-type f」のみを追加してください。

答え2

にディレクトリを渡すと、lsディレクトリ自体ではなくそのディレクトリにあるファイルが一覧表示されます。サブディレクトリのファイルを繰り返し一覧表示するには、この-Rフラグを使用します。コンテンツの代わりにディレクトリを一覧ls表示するには、このオプションを渡します。ls-d

-tフラグは-rソートにのみ影響し、一度に1つずつファイルをリストするので、役に立たない。

find Program.8.koebe/ -mtime -10 -exec ls -gohd {} \;

-printfGNU findを使用すると、外部コマンドを呼び出す代わりに使用できます。出力形式は似ていますが、同じではありません。

find Program.8.koebe/ -mtime -10 -printf '%M %n %s %M %c %p\n'

関連情報