重复指令bash脚本



这很容易成为任何lang ...但是我现在正在使用bash。我正在寻找可以在langs中复制的背后的理解。

所以...

我正在将文件复制到目录树上,而不是用另一个文件代替该文件。

     cp "$DIR"/folder2/file2 "$DIR";
     mv "$DIR"/folder1/file1 "$DIR"/folder2/file2;

然后我将复制的文件移动到另一个文件夹中。启动相同的舞蹈。

     cp "$DIR"/folder3/file3 "$DIR";
     mv "$DIR"/file2 "$DIR"/folder3/file3

我想像100次 。

这样做

最优雅的方式是什么?

优雅,从别人的简短意义上讲,可以理解。

for i in {1..100}; do
    j=$((i+1))
    cp "$DIR"/folder$j/file$j "$DIR"
    mv "$DIR"/folder$i/file$i "$DIR"/folder$j/file$j
done

您正在尝试:

  1. 备份文件b。
  2. 重命名(或移动)文件作为文件b。
  3. 备份文件c。
  4. 将文件b的重命名为文件c。
  5. 备份文件d。
  6. 将文件c的备份重命名为文件d。

等等。

实际上更容易向后进行操作,因此您只需要备份最后一个文件。

last=100
mv "$DIR/folder$last/file$last" "$DIR"
for i in $(seq $last -1 2); do
  mv "$DIR/folder$((i-1))/file$((i-1))" "$DIR/folder$i/file$i"
done 

注意:

  • seq $last -1 2通过-1的增量生成了从$last2的数字序列。
  • 我使用的是seq而不是支撑扩展,因为当您拥有{$last .. 1}
  • 时,后者不会扩展数字

相关内容

  • 没有找到相关文章

最新更新