将装满文件的目录移至顶部

将装满文件的目录移至顶部

我备份了一个目录,里面有许多目录和文件。最近有些文件丢失了。我只想把丢失的文件移过来。

我更喜欢移动文件而不是仅仅复制,因为这个特定的盒子上的空间非常宝贵,而且文件相当大。

如何在没有 GUI 的情况下通过命令行实现这一点?

答案1

快速而又简单的方法是使用带有 -n 或 --no-clobber 选项的 mv(move)命令。

来自 mv 手册页:

   -n, --no-clobber
          do not overwrite an existing file

例子:

你两个目录:

/文件/

/备份/

如果 /files 是缺少文件的原始目录,而 /backup 目录是您最新的备份,则命令为:

mv-n/备份/*/文件

如果您的 Linux/Unix 版本不支持 -n 选项,您可以使用 -i 选项执行相同的操作,只不过它会询问您是否要覆盖现有文件。您需要对每个文件回答否。如果目标目录中不存在该文件,它不会询问您。

来自 mv 手册页:

   -i, --interactive
          prompt before overwrite

即 mv -i /backup/* /files

当心。

吉姆

答案2

就我个人而言,我经常使用 rsync 来做这种事情。阅读手册页。有很多选项,需要学习的东西也很多,但从长远来看,我认为它是值得的。最好的部分是它是免费的,并且已经安装在大多数 Linux 系统上。

rsync 的选项包括仅更新自上次更新以来发生变化的文件、过滤某些文件和目录的能力、可以先进行试运行以及许多其他功能。值得注意的是,rsync 不仅可以在主机系统上的文件之间进行复制,还可以通过网络进行复制。因此,无论您如何备份文件,它都应该可以工作。快速查看手册页似乎 --remove-source-files 选项与移动文件类似。您甚至可能会发现您非常喜欢它,以至于下次会用它来进行备份。

答案3

使用试用版进行文件夹比较无可比拟,然后将文件移到那里。很简单。

答案4

与JimT的回答类似:

cd /backupdir
for file in `find . -type f`
do
  yes no | mv -i $file /origdir/`dirname $file`
done

其中“/backupdir”是您的备份目录,“/origdir”是您的原始源目录。

“yes”命令对于处理交互式命令非常有用。在这种情况下,当要求覆盖现有文件时,它会自动回答“否”,因此只有丢失的文件才会被移动。

相关内容