NinjaCat Asked: 2014-04-18 05:36:06 +0800 CST2014-04-18 05:36:06 +0800 CST 2014-04-18 05:36:06 +0800 CST Bash:一次一个 mv 目录 772 我正在尝试将文件夹的所有子目录移动到同一服务器上的另一个共享。如果我执行 mv *,我将用完空间,因为在所有文件夹都转移之前不会删除文件夹。所以我想创建一个循环遍历每个脚本的简短脚本。有人有我可以看的例子吗?我四处搜寻,但找不到我要找的确切内容。 scripting 5 个回答 Voted Best Answer dawud 2014-04-18T05:49:33+08:002014-04-18T05:49:33+08:00 你可以使用rsync(1): rsync --remove-source-files /path/to/source /path/to/destination 这将从原始路径中删除成功传输的文件。 Michael Hampton 2014-04-18T05:38:41+08:002014-04-18T05:38:41+08:00 你想要for。 一个例子(这将只显示将要做什么): for item in *; do echo mv "$item" /destination/directory done 当你高兴时,删除echo以真正做到这一点。 Craig Tullis 2014-04-19T00:06:15+08:002014-04-19T00:06:15+08:00 使用mv命令将文件从一个卷移动到另一个卷是一种复制操作。但是,您将如何用完源卷上的空间?如果该卷小于您正在移动的文件的总大小,您只会用完目标卷上的空间。但无论哪种方式,您只是在源卷上释放空间,而不是在其上分配更多空间。 如果您使用mv将文件从一个目录“移动”到同一卷上的另一个目录,那只是重命名操作。您不是在复制数据,您只是在调整文件指针以呈现不同的目录层次结构。您不会用完空间,因为文件数据保留在原来的位置。 无论哪种方式,我都不确定我是否看到了问题。:-) 你是否真的在尝试这个并且空间不足,或者你只是想提前计划? Florin Asăvoaie 2014-04-18T06:44:24+08:002014-04-18T06:44:24+08:00 ls -1 | xargs -n1 -i echo mv '{}' destination 开心的时候去掉回声。 kalikid021 2014-04-18T09:50:08+08:002014-04-18T09:50:08+08:00 仅供参考,我相信该mv命令不会执行复制然后删除操作,即具有 mv /home/foo /home/bar 短时间内同时存在。它的操作更像是重命名。必须更改文件系统记帐,以便/home/foo现在指向的内容/home/bar实际上不会将磁盘上的数据从一个位置实际移动到另一个位置,或者从先前的位置复制然后删除。
你可以使用
rsync(1)
:这将从原始路径中删除成功传输的文件。
你想要
for
。一个例子(这将只显示将要做什么):
当你高兴时,删除
echo
以真正做到这一点。使用
mv
命令将文件从一个卷移动到另一个卷是一种复制操作。但是,您将如何用完源卷上的空间?如果该卷小于您正在移动的文件的总大小,您只会用完目标卷上的空间。但无论哪种方式,您只是在源卷上释放空间,而不是在其上分配更多空间。如果您使用
mv
将文件从一个目录“移动”到同一卷上的另一个目录,那只是重命名操作。您不是在复制数据,您只是在调整文件指针以呈现不同的目录层次结构。您不会用完空间,因为文件数据保留在原来的位置。无论哪种方式,我都不确定我是否看到了问题。:-) 你是否真的在尝试这个并且空间不足,或者你只是想提前计划?
ls -1 | xargs -n1 -i echo mv '{}' destination
开心的时候去掉回声。
仅供参考,我相信该
mv
命令不会执行复制然后删除操作,即具有mv /home/foo /home/bar
短时间内同时存在。它的操作更像是重命名。必须更改文件系统记帐,以便
/home/foo
现在指向的内容/home/bar
实际上不会将磁盘上的数据从一个位置实际移动到另一个位置,或者从先前的位置复制然后删除。