批量重命名前缀为Unix的目录

时间:2014-07-11 16:29:12

标签: shell unix

我正在尝试使用Unix中的前缀批量重命名目录。前缀如abc -

所以如果当前目录是123,我想把它变成abc-123等

我试过

for d in $(find . -name '*' -type d) ; do
mv $d $(echo $d | sed 's/$d/abc-$d/g')
done

但这不起作用。做很少的shell脚本,所以任何帮助将不胜感激。 重命名命令不可用

谢谢!

2 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你可以用一行来find -exec这样做,

find . -type d -depth -execdir mv {} abc-{} \;

答案 1 :(得分:0)

尝试:

for d in $(find . -depth -type d); do
    b=$(basename $d)
    p=$(dirname $d)
    mv -v $d $p/abc-$b
done

请注意,-depth参数非常重要:它确保从下到上处理目录,以便在父目录之前重命名子目录。如果你不这样做,那么你最终会尝试重命名不再存在的路径。

我还建议用

替换第4行
    echo "mv -v $d $p/abc-$b"

然后首先运行该版本的循环,这样你就可以在尝试实现它之前看看它会做什么。