此命令将一个或多个文件夹的内容移动到父文件夹。但是,如果有相同的文件名,具有相同的扩展名,那么就会有文件在移动过程中被覆盖。
find . - mindepth 2 -type f -exec mv "{}" . \; && fin d . - type d -empty -delete
如何修改此命令,使任何具有重复文件名的文件不会被覆盖,而会被(1)、(2)、(3)等附加?
首先,这是我在这里的第一篇文章,我必须指明我是一个完全的Linux新手。
我们最近为办公室购买了一个QNAP NAS盒子,在这个盒子上我们有大量的数据,这些数据是从一台旧的Mac XServe机器上复制过来的。许多文件和文件夹最初在名称中有正斜杠(HFS+从一开始就不应该允许这样做),当复制到NAS时,它们都被冒号取代。
我现在想将所有冒号重命名为下划线,并在此处的另一个线程中找到以下命令:
但是,这个机器上的Linux不能理解rename命令,所以我不得不使用mv。我已经尝试使用下面的代码,但这只适用于当前文件夹中的文件,有没有方法可以将其更改为包括所有子文件夹?
for f in *.*;
我有一个名为temp的目录。在这个文件夹中,我有多个子文件夹(我不知道确切的数量)。现在,我在temp中创建了另一个名为Untitled的子文件夹。现在,我想移动Untitled中的所有其他子文件夹。
假设我在临时目录中有3个文件夹,名为a,b,c,现在我创建了Untitled。所以temp现在包含4个文件夹a,b,c和Untitled。执行操作后,temp将只包含包含a,b,c的无题文件夹。
如何使用bash实现这一目标?
我的Bash版本(在Ubuntu 16.04上)
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)