0

ディレクトリ内の連続ファイルのリスト内のファイルが見つからない場合にファイルを移動する簡単なスクリプトを作成しようとしています。たとえば、「1」、「2」、「3」、「5」などの名前のファイルを含むディレクトリがある場合、「3」を「4」に、「3」を「2」などに移動したい以下のコードがあります。Upper と Lower は、シフトしたい値に対応しています。上記の例を使用すると、LOWER は 1、UPPER は 5 になります。

 for z in $( eval echo {$UPPER..$LOWER}) ; do          
      checkfile $DIRNAME $z #Returns -1 on file missing
      if [[ $? -ne 0 ]]; then
           echo "Found bad match"
           for y in $( eval echo {$z..$LOWER}) ; do
                n=$(($y - 1))
                echo "$y $n"
                mv "$n" "$y"
           done
           exit 0
      fi  
 done

次の出力を受け取ります

Found bad match
18 17
mv: cannot stat `17': No such file or directory
17 16
mv: cannot stat `16': No such file or directory
16 15
mv: cannot stat `15': No such file or directory
15 14
mv: cannot stat `14': No such file or directory

なぜmvが不平を言っているのかよくわかりません。どんなアイデアでも大歓迎です!

4

1 に答える 1

1

mvコマンドはファイルをローカル ディレクトリに移動しようとしていますが、チェックしているファイルは別の場所 ( 内)にあり$DIRNAMEます。おそらく試してみてくださいmv "$DIRNAME/$n" "$DIRNAME/$y"

于 2012-04-08T20:57:38.440 に答える