find コマンドの変数は bash の新しい変数に設定されます。

find コマンドの変数は bash の新しい変数に設定されます。

次のようにできますか?

inputNum="$1"

files=($(find /dir/to/check -mtime $inputNum))

デフォルトでは、アイデアは、入力パラメータを使用してファイルを検索する日数を設定し、それを変数の配列に設定できることです。 Bashで読むことができる構文はわかりません。

答え1

代わりに、使用しない限り、出力は安定してfind後処理できません(ジョブが指定されていない場合は暗黙的に)。-print0-print-print

出力を後処理しfind -print0てファイルパスを配列に保存するには、次のようにします。

Bash4.4+の場合:

readarray -td '' files < <(find /dir/to/check -mtime "$inputNum" -print0)

以前のバージョンの場合:

files=()
while IFS= read -rd '' file; do
  files=("${files[@]}" "$file")
done < <(find /dir/to/check -mtime "$inputNum" -print0)

より一般的には、次のアドバイスを読んでください。検索結果を繰り返すのはなぜ悪い習慣ですか?

答え2

使えるなら扱いにくいbashの代わりにはるかに簡単です。 Zsh は属性に基づいてファイルを照合できます。グローバル予選

files=(/dir/to/check/**/*(Dm$inputNum))

**/*サブディレクトリを再帰的に検索します。次の角カッコには*glob修飾子が含まれています。Dドットファイルを含め、m変更時間(日)に基づいてファイルと一致しますfind -mtime(別の単位を選択して時間を制限することもできます(たとえば、(Dmm-$min)このようにfind -mmin -$min))。

ZshはmacOSにプリインストールされています。他のほとんどのUNIXシステム(特にほとんどのLinuxディストリビューション)はパッケージ化されていますが、デフォルトではインストールされません。

関連情報