Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将所有文件和文件夹移动到同一文件夹的子文件夹中_Linux_Bash_Gitlab Ci - Fatal编程技术网

Linux 如何将所有文件和文件夹移动到同一文件夹的子文件夹中

Linux 如何将所有文件和文件夹移动到同一文件夹的子文件夹中,linux,bash,gitlab-ci,Linux,Bash,Gitlab Ci,在自动部署管道的gitlab ci中,我们需要将旧应用程序的所有文件和文件夹移动到同一根目录中的文件夹“\u backup”中 这是文件夹: 这是我们的做法: mv/mnt/test.local/*/mnt/test.local/\u备份 但错误消息如下: mv:无法重命名“/mnt/test.local/favicon.ico”:没有这样的文件或目录 我认为问题在于我无法将所有文件和文件夹(包括“\u backup”-文件夹)移动到“\u backup”-文件夹中。我读到了extglobsh

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

这是文件夹:

这是我们的做法:
mv/mnt/test.local/*/mnt/test.local/\u备份

但错误消息如下:
mv:无法重命名“/mnt/test.local/favicon.ico”:没有这样的文件或目录

我认为问题在于我无法将所有文件和文件夹(包括“\u backup”-文件夹)移动到“\u 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
谢谢,
Marc

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

find /YourHome -mindepth 1 -path /YourHome/_backup -prune -o -print|xargs -I{} cp -r {} /YourHome/_backup
如果要执行“mv”,请将xargs中的
cp
命令替换为
mv

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

find /YourHome -mindepth 1 -path /YourHome/_backup -prune -o -print|xargs -I{} cp -r {} /YourHome/_backup
如果要执行“mv”,请将xargs中的
cp
命令替换为
mv

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

- root
  - _backup
  - website

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

- root
  - _backup
  - website

你能做一个
ls-lrth/mnt/test.local/
并发布内容吗?我在描述中添加了一个文件夹的屏幕截图。你能做一个
ls-lrth/mnt/test.local/
并发布内容吗?我在描述中添加了一个文件夹的屏幕截图。我尝试过,我认为问题是,它会创建一个文件“\u backup”不是文件夹:
$find/mnt/test.local/*-mindepth 1-path/mnt/test.local//u backup-prune-o-print{xargs-I{}mv{}/mnt/test.local/\u backup
错误:
mv:cannot rename'/mnt/test.local/static/media':不是目录
@Wiesenberg删除
*
并阅读
mv
手册页,特别是
-t
选项。很抱歉,
$find/mnt/test.local/-mindepth 1-path/mnt/test.local//u backup-prune-o-print | xargs-I{}-mv}-t/mnt/test.local/\u backup
不起作用,我不明白。@Wiesenberg哦,我再次检查了命令,出现了一个问题,最大深度也应该是1。对不起,我的错。请尝试更新的答案请看我的问题我添加了一个更新来显示我的尝试结果。ThanksI尝试了它,我认为问题是,它将创建一个文件“_backup”,而不是文件夹:
$find/mnt/test.local/*-mindepth 1-path/mnt/test.local//u backup-prune-o-print | xargs-I{}mv/mnt/test.local/_backup
错误:
mv:无法重命名“/mnt/test.local/static/media”:不是一个目录
@Wiesenberg删除
*
并阅读
mv
手册页,尤其是
-t
选项。很抱歉,
$find/mnt/test.local/-epth 1-path/mindt/test.local////\u backup-prune-o-print}-t/mnt/test.local/_backup
不起作用,我不明白。@Wiesenberg哦,我再次检查了命令,出现了问题,最大深度也应该是1。对不起,我的错。请尝试更新的答案请看我的问题我添加了一个更新来显示我的尝试结果。谢谢