【问题标题】:How to move all files and folders into a subfolder of the same folder如何将所有文件和文件夹移动到同一文件夹的子文件夹中
【发布时间】:2020-08-30 17:22:17
【问题描述】:

在我们的自动部署管道的gitlab-ci中,我们需要将旧应用程序的所有文件和文件夹移动到同一根目录下的“_backup”文件夹中。

这是文件夹:

这是我们的方法: mv /mnt/test.local/* /mnt/test.local/_backup

但错误消息是: mv: can't rename '/mnt/test.local/favicon.ico': No such file or directory

我认为问题在于我无法将所有文件和文件夹(包括“_backup”文件夹)移动到“_backup”文件夹中。我读到了extglob shell 选项,但是!(_backup) 不起作用,还有其他方法吗?

更新: 我尝试了@Kent 的方法,但不知何故它不起作用。当我在本地测试它时,我收到以下错误,但它可以工作:

$ find ~/Workspace/testingmove/ -mindepth 1 -maxdepth 1 -path ~/Workspace/testingmove/_backup -prune -o -print|xargs -I{} mv {} -t ~/Workspace/testingmove/_backup
mv: rename /Users/wiesenberg/Workspace/testingmove//_backup to /Users/wiesenberg/Workspace/testingmove/_backup/_backup: Invalid argument
mv: rename -t to /Users/wiesenberg/Workspace/testingmove/_backup/-t: No such file or directory

当我在 gitlab-ci 中尝试时,出现以下错误:

$ find /mnt/test.local/ -mindepth 1 -maxdepth 1  -path /mnt/test.local/_backup -prune -o -print|xargs -I{} mv {} -t /mnt/test.local/_backup/
 mv: unrecognized option: t
 BusyBox v1.31.1 () multi-call binary.
 Usage: mv [-fin] SOURCE DEST
 or: mv [-fin] SOURCE... DIRECTORY

谢谢, 马克

【问题讨论】:

  • 你能做一个ls -lrth /mnt/test.local/ 并发布内容吗?
  • 我在说明中添加了文件夹的屏幕截图。

标签: linux bash gitlab-ci


【解决方案1】:

您可以使用find 排除备份目录:

find /YourHome -mindepth 1 -path /YourHome/_backup -prune -o -print|xargs -I{} cp -r {} /YourHome/_backup

如果要执行“mv”,请将 xargs 中的 cp 命令替换为 mv

更新

find /YourHome -mindepth 1 -maxdepth 1  -path /YourHome/_backup -prune -o -print|xargs -I{} mv {} -t /YourHome/_backup

【讨论】:

  • 我试过了,我认为问题在于,它会创建一个文件“_backup”而不是文件夹:$ find /mnt/test.local/* -mindepth 1 -path /mnt/test.local/_backup -prune -o -print|xargs -I{} mv {} /mnt/test.local/_backup 错误:mv: can't rename '/mnt/test.local/static/media': Not a directory
  • @Wiesenberg 删除 * 并阅读 mv 手册页,尤其是 -t 选项。
  • 抱歉,$ find /mnt/test.local/ -mindepth 1 -path /mnt/test.local/_backup -prune -o -print|xargs -I{} mv {} -t /mnt/test.local/_backup 不起作用,我不明白。
  • @Wiesenberg 哦,我又检查了命令,有问题,最大深度也应该是 1。对不起这是我的错。请尝试更新的答案
  • 请看我的问题我添加了一个更新来显示我的尝试结果。谢谢
【解决方案2】:

我的解决方法是创建了两个子文件夹并将 Web 服务器路由到子文件夹。

- root
  - _backup
  - website

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2022-08-21
    • 2016-01-25
    • 2019-10-27
    • 2011-09-09
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多