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' \;