我有如下目录列表:
stats/gauges/stock/market/PLN/EUR/*
stats/gauges/stock/market/USD/EUR/*
stats/gauges/stock/market/PLN/CZK/*
还有数百个这样的。我需要改变货币的顺序,所以它变成:
stats/gauges/stock/market/EUR/PLN/*
stats/gauges/stock/market/EUR/USD/*
stats/gauges/stock/market/CZK/PLN/*
这些目录内部有更多嵌套目录和一些文件。
我实际上想要实现的是修复统计数据中的“命名”,这是Carbon + Whisper + Graphite
安装程序使用的数据存储格式。
最简单可靠的方法是什么?
答案1
鉴于上面的示例,如果您可以确保始终有 6 个目录,则可以通过执行以下操作来交换最后两个目录:
find stats -mindepth 5 -maxdepth 5 -type d \ # (Or some other way of generating your list of directories)
| while read dir
do
mv -v "$dir" "$(echo $dir | awk -F '/' '{ print $1"/"$2"/"$3"/"$4"/"$6"/"$5 }')"
done
echo
在前面扔一个mv
先检查一下。
如果您无法计算目录的数量,我确信有一种更通用的方法可以“交换最后两个”,但我不知道。