linux - 将子文件夹重命名为父文件夹,删除 'extra' 文件夹

标签 linux macos bash shell rsync

当我搞砸了 rsync 并忘记添加尾部斜杠时遇到了这个问题。

所以现在我有一个额外的文件夹。

当前文件夹树

/Volumes/hd/images1/images1/
/Volumes/hd/images2/images2/
/Volumes/hd/images3/images3/

我想得到这个

/Volumes/hd/images1/
/Volumes/hd/images2/
/Volumes/hd/images3/

有没有办法摆脱多余的文件夹来得到我想要的东西,我试过

mv /Volumes/hd/images1/images1/ /Volumes/hd/images1/

但是有一个错误说它们是相同的,我也尝试了一些基本的 php 脚本来为我完成这项工作,但没有任何运气。

我无法删除或真正复制文件夹的内容,因为它有大量数据,我可以通过更改父文件夹的名称手动完成,然后将子文件夹拖到/hd,然后删除旧的父文件夹。但它有很多工作,所以如果有人知道如何做到这一点,我会非常高兴。

如果有任何兴趣,我会使用 Mac OS X

最佳答案

你应该学习如何使用 shell 命令,也许是这样的

 for f in /volumes/hd/* ; do
    b=$(basename $f)
    d=$(dirname $f)
    mv $f $d/$b.dir
    mv $d/$b.dir/* $f
 done

首先通过将 mv 替换为 echo mv 来检查它是否执行了您想要的操作

您真的应该学习如何在 MacOSX 上使用基本的 Unix 命令(在终端内)

关于linux - 将子文件夹重命名为父文件夹,删除 'extra' 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8653715/

相关文章:

c - 如何使用 libnl-route 设置 netem qdisc 和 tbf qdisc?

linux - 如何获取已删除 rpm 的详细信息

linux - 如何在 Azure Linux VM 上转移域和创建子域

linux - 如何在 bash 的 for 循环中使用命令的输出?

objective-c - 如何找到任何事件应用程序的闪烁光标位置?

java - Mac 上的 MVN 权限被拒绝

C++ 在 Windows 上编译但在 OS X GCC 下出错

python - 计算两个文本文件的混淆矩阵

linux - 从 bash 脚本发布 SOAP 信封

bash - 结合wget和grep下载