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

/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

最佳答案

这应该工作:

#!/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


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

关于linux - Linux将文件从基本路径循环移动到多个路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30010248/

10-11 08:46