`$RANDOM` は `find` の `-exec` ではランダムではありません。

`$RANDOM` は `find` の `-exec` ではランダムではありません。

Linuxシステムで複数のフォルダを見つけて移動しようとしています。

すべてのフォルダーの名前は同じで、echo $RANDOMフォルダー名でランダムな数字を提供します。

echo $RANDOM
実際に実行されるたびに乱数が出力されます。ただし、
find . -type d -name .AppleDouble -exec mv \'{}\' \'/raid/data/Storage/AppleDouble/`echo $RANDOM` \;
各フォルダに同じ「ランダム」番号が使用されるため、1つのフォルダだけが移動されます。

$RANDOM問題は走り始めるとすぐに評価するようです。オプションが実行される前に値が計算されないようにfindエスケープするにはどうすればよいですか(またはこれを行うより良い方法は何ですか)。$RANDOM-exec

注:私はbusyboxには何もインストールできません。

ベストアンサー1

あなたは正しいです。引用しなかったため、findコマンドラインを作成するとシェルによって評価されます。ただし、一般的には-exec使用されていないため、bash一重引用符で引用したりエスケープしたりすると、$まったく拡張されません。

bash解決策は内部的に呼び出すことです-exec

find . -type d -name .AppleDouble -exec bash -c 'echo $RANDOM' \;

おすすめ記事