【发布时间】:2021-10-29 04:06:15
【问题描述】:
在我的工作目录中,我有几个文件夹,其中包含数百个不同类型的文件(.txt、.csv、.png...)。这些文件夹的结构如下例所示:
myDir/
myDir/Folder_1/ ... file_1.txt, file_2.csv, file_3.txt
myDir/Folder_2/ ...
myDir/Folder_3/ ...
...
我需要将所有 .csv 文件移动到一个新目录,但要保持相同的目录树,如下所示:
myDir/
myDir/Folder_1/ ...
myDir/Folder_2/ ...
...
myDir/New/
myDir/New/Folder_1/ ... file_2.csv
myDir/New/Folder_2/ ...
...
我发现 cp 命令有 --parents 标志,可以做我想做的事情,但我不想复制这些文件,我只想移动它们。
我之前搜索过这个问题,找到了这个:Bash script for moving files and their parent directory
这与我需要做的非常相似,但我无法理解。
【问题讨论】:
-
然后复制并删除它们?
-
我无法复制这些文件,原因有二:磁盘空间和执行时间。这就是我试图移动它们的原因。据我所知,在同一个磁盘(具有相同文件系统)的两个目录之间移动文件是一种即时操作,不需要创建副本
-
@MiguelHerreraRuiz,你可能需要
rsync。它具有移动(不复制)到另一个目录的能力。它也是比 cp/scp 等更智能的命令,即使它在运行 rsync 命令(你第一次使用)时被取消(或以任何方式停止/杀死),它也会从最后开始移动/复制文件最后一次运行,因为它处理存储块级别的事情。它不是 bash 的默认实用程序,因此您可能需要安装它以防它未安装在您的系统中。 -
好的,我会尝试使用 rsync 移动它们
-
@MiguelHerreraRuiz,在将它们运行到实际目录之前,请小心并针对单个测试左右的目录对其进行测试。
标签: linux bash shell directory mv