这很容易成为任何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
您正在尝试:
- 备份文件b。
- 重命名(或移动)文件作为文件b。
- 备份文件c。
- 将文件b的重命名为文件c。
- 备份文件d。
- 将文件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
的增量生成了从$last
到2
的数字序列。 - 我使用的是
seq
而不是支撑扩展,因为当您拥有{$last .. 1}
时,后者不会扩展数字