【问题标题】:Linux Move files from base path to multiple paths in a loopLinux 在循环中将文件从基本路径移动到多个路径
【发布时间】:2015-07-12 15:57:53
【问题描述】:

您能否提供一些指针以有效地将文件从基本路径移动到多个路径。文件夹结构已经创建。

/Path/AdminUser/User1/1111/Reports/aaa.txt 到 /Path/User1/1111/Reports/aaa.txt
/Path/AdminUser/User1/2222/Reports/bbb.txt 到 /Path/User1/2222/Reports/bbb.txt
/Path/AdminUser/User2/3333/Reports/ccc.txt 到 /Path/User2/3333/Reports/ccc.txt
/Path/AdminUser/User2/3333/Reports/ddd.txt 到 /Path/User2/3333/Reports/ddd.txt

我不想移动目录结构。我想每天将文件从该源路径移动到目标路径。我需要指针来编写一个 bash 脚本,以确保 aaa.txt 完全可以从 /Path/AdminUser/User1/1111/Reports//Path/User1/1111/Reports/........ 坐下

例如:

#!/bin/bash

dir1="/Path"
subs= `ls $dir1/AdminUser`
for i in $subs; do
  mv $dir1/AdminUser/$i/*/Reports $dir1/$i/*/Reports 
done

【问题讨论】:

  • mv /Path/Admin/User* /Path/. 不工作吗?
  • @tivn - 因为我希望每天递归地移动文件而不是文件夹结构,所以它不起作用。

标签: linux bash


【解决方案1】:

这看起来可以在没有脚本的情况下实现。看看 rsync。

rsync -r /Path/AdminUser/* /NewPath/

【讨论】:

  • 感谢 Sash,rsync 有效,但由于在我的场景中,它不仅仅是文件夹结构,我必须确保文件系统的安全性和所有权不受影响,所以我倾向于使用脚本来移动从父路径到子路径的循环中的文件。
  • 您可以 1. 使用带有几个选项的 rsync(我总是使用 -avuHAX,它会做一些事情并保留所有权。2. 使用 getfacl 和 setfacl 来保存和设置权限。
【解决方案2】:

这应该可行:

#!/bin/bash
dir1=/home/jahid/newfolder
for i in "$dir1"/AdminUser/*; do
if [[ -d $i && ! -L $i ]]; then 
dir2="${i##*/}"
for j in "$i"/*; do 
if [[ -d $j && ! -L $j ]]; then 
j="${j##*/}"
[[ -d "$dir1"/"$dir2"/"$j" ]] || mkdir -p "$dir1"/"$dir2"/"$j"
mv "$i"/"$j"/Reports "$dir1"/"$dir2"/"$j"/
fi
done
fi
done

编辑:添加了检查现有目录结构的代码,如果不存在,它将创建它。

【讨论】:

  • 不,我的问题绝对不是那个。
  • 我想每天将文件从源路径移动到目标路径。我需要指针来编写一个 bash 脚本,以确保 aaa.txt 完全可以从 /Path/AdminUser/User1/1111/Reports/ 到 /Path/User1/1111/Reports/....... . 例如:#!/bin/bash dir1="/Path" subs= ls $dir1/AdminUser for i in $subs; do mv $dir1/AdminUser/$i/*/Reports $dir1/$i/*/Reports done
  • @Karthik 根据您的评论编辑。我还没有测试过,所以如果有任何问题,请告诉我。
  • 感谢您的输入,但它抛出了错误--/bin/bash^M: bad interpreter: no such file or directory。让我检查一下路径.....我们有 2 级循环...../Path/AdminUser/Users(firstlevel)/id(secondlevel)/Daily...
  • 我的错,我给的路径不正确,你的脚本就像一个魅力。非常感谢您的快速响应和努力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2023-02-25
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
相关资源
最近更新 更多