我正在尝试使用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脚本,所以任何帮助将不胜感激。 重命名命令不可用
谢谢!
答案 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"
然后首先运行该版本的循环,这样你就可以在尝试实现它之前看看它会做什么。