findコマンドで使用するために複数のディレクトリパスで事前定義された変数を設定する方法

findコマンドで使用するために複数のディレクトリパスで事前定義された変数を設定する方法

90日を過ぎた特定のディレクトリのファイルを削除するスクリプトが欲しいです。図に示すように、異なるパスを持つ8つのディレクトリがあります。

次のディレクトリから find コマンドを実行できます。

find /directory1/dir2/dir3/dir4/ -mtime +90 | wc -l

このコマンドは 6401 と同様の結果を提供します。

しかし、見なければならない8つのディレクトリがあります。ディレクトリリストを変数に設定するにはどうすればよいですか?私は持っています:

variable

DIRLIST=/directory1/dir2/dir3/dir4/ /directory1/dir2/dir3/dir5/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir7/

command 

find $DIRLIST | wc -l

出力は次のとおりです。

nameofscript.sh[2]: /directory1/dir2/dir3/dir5/: 0403-006 実行権限が拒否されました。

findコマンドでディレクトリだけを呼び出すとコマンドが機能するため、これが実際に権限の問題ではないことがわかるので、これは奇妙です。

どんな助けでも大変感謝します。

ベストアンサー1

$DIRLISTを誤って宣言しました。

配列変数を宣言する方法です。

DIRLIST=(/directory1/dir2/dir3/dir4/ /directory1/dir2/dir3/dir5/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir6/ /directory1/dir2/dir3/dir7/)

次に find コマンドを実行します。

find "${DIRLIST[*]}" | wc -l

おすすめ記事