问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用shell批量移动子目录下文件到当前文件夹

发布网友 发布时间:2022-04-30 19:27

我来回答

8个回答

热心网友 时间:2022-04-18 10:23

#!/bin/bash
rp=$(pwd)
echo rootpath-----------------:${rp}
# function
moveFile(){
# get dirs
ls -F | grep "/$" > temp_dirs.txt
cat temp_dirs.txt | while read d
#for d in $(cat temp_dirs.txt);
#while read d
do
cp=$(pwd)/${d}
cd ${cp}
echo currentPath----------------------:${cp}
  ls -al | grep "^-" > temp_files.txt
cat temp_files.txt | while read f
#for f in $(cat temp_files.txt);
#while read f
do
fileName="${f##* }"
echo filename--------------------:${fileName}
newFileName=${rp}/${d%*/}-${fileName}
echo newfilename---------------------:${newFileName}
fullPath=${cp}${fileName}
echo fullPath-------------------------:${fullPath}
mv ${fullPath} ${newFileName}
done 
#< <(ls -al | grep "^-")
# delete temp file
test -a temp_files.txt && rm -rf temp_files.txt 
#
moveFile
test -a temp_dirs.txt && rm -rf temp_dirs.txt
cd ..
done
       #< <(ls -F | grep "/$")
}
# exec
echo 'start move files ...'
moveFile
rm -rf *temp_dirs.txt
rm -rf *temp_files.txt
echo 'move files end'

技术有限,此代码效率不高;在linux测试没问题,mac上没测,你可以先测一下;文件移到根目录会被重命名为它原先所在的文件夹加上短杠加上它原先的名称

热心网友 时间:2022-04-18 11:41

`把这代码放在待转入的文件夹路径下面。

from_folder=文件夹路径

from_folder=                 ###文件夹路径,需要手写入
current_folder=$(pwd)        ###新件夹路径,与脚本在一个路径下所以不用改动


for file in $(find $from_folder)
do
[[ -d $file ]] && continue    #如果不是文件,跳过

#如果是重名, 在名字前加入路径,
#如果不重名, 直接移到现有文件夹下
if [[ -e ${file##*/} ]];then
mv $file $(echo $file | sed 's/\//_/g')  
else
mv $file .
fi 

done

热心网友 时间:2022-04-18 13:15

需要写一个函数
#!/bin/bash

function read_dir(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
read_dir $1"/"$file
else
echo $1"/"$file
fi
done
}

read_dir $1 > ~/txt_27316324984592

for i in $(<~/txt_27316324984592); do mv $i $2; done

rm ~/txt_27316324984592 #中间文件,存储文件路径

将代码复制到getfile.sh,chmod 777 getfile.sh
用法:path/to/getfile.sh 你要移动的文件夹路径 目标文件见路径

热心网友 时间:2022-04-18 15:07

#!/bin/bash
#
dir=$(pwd)
echo "当前目录为$dir"
a=0
for i in `find $dir -type d`;do
if [ $i != $dir ];then
mv $i $dir
echo "移动$i 目录至$dir"
fi
done
-----------------------------------
这个可以把下一级文件夹移动到当前目录下。就是要多运行几次。还有就是同名文件无法移动。我觉得还挺实用,同名文件夹还没想好。

热心网友 时间:2022-04-18 17:15

1、主要是从文件名截取出日期,如果固定了位数
2、可以先按_分割取第二段
echo $file|awk -F\_ '{print $2}'
3、然后再取第4位后面的8位
4、例如:vi a.sh
#!/bin/sh
for file in `ls *.jpg`;do
echo $file
datedir=$(echo $file|awk -F\_ '{print $2}'|awk '{print substr($1,4,8)}')
mkdir $datedir
/bin/mv $file $datedir
done追问试了下没用啊

热心网友 时间:2022-04-18 19:39

热心网友 时间:2022-04-18 22:21

1、主要是从文件名截取出日期,如果固定了位数
2、可以先按_分割取第二段
echo $file|awk -F\_ '{print $2}'
3、然后再取第4位后面的8位
4、例如:vi a.sh
#!/bin/sh
for file in `ls *.jpg`;do
echo $file
datedir=$(echo $file|awk -F\_ '{print $2}'|awk '{print substr($1,4,8)}')
mkdir $datedir
/bin/mv $file $datedir
done

热心网友 时间:2022-04-19 01:19

现在没网,等有网了帮你写个EXE程序得了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
橙子冷藏能保存多久 橙子会过期吗 新鲜橙子如何保存更久 橙子保鲜剂对人体有害吗 粒上皇开口熟栗120g*5袋(共600g)-详细介绍 三皇王板栗介绍 品牌榜:2024年板栗十大品牌排行榜 投票结果公布【新】 为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 清平乐     李煜   别来春半,触目柔肠断。砌下落梅如雪乱,拂了一身还满。   雁来音信无凭,路遥 如何批量移动文件到对应的文件夹? &quot;清平乐&quot;的读音是什么? 关于读音问题:李煜的《清平乐》(别来春半,触目愁肠断) 李煜的清平乐,诗,要解释,和诗中对应的文字注音,急!!! 清平乐别来春半多音字怎么读? 怎么才能快捷学会画画 手指上长个硬硬的疙瘩,一碰就疼 湖南省公务员考试成绩查询入口 郴州2015年湖南省公*面试成绩什么时间公布?怎么查询自己的面试成绩? 湖南省公务员考试成绩查询 2014湖南省公务员考试成绩在哪查询? 怎么快速学画画呢? 湖南省公务员考试成绩查询网址 手上起了个硬疙瘩,用手按会有疼痛感,以前长过后来没管它就没有了,现在又出来了,不是半透明的,好像里 四年级周记《有趣的情景》 怎么快速掌握绘画技巧和方法? 2013湖南公务员考试成绩查询入口 怎样做一个文明礼仪的小学生周记 湖南省公务员考试什么时候出成绩 李煜的诗有什么? 删除微信好友,在不知道对方的情况下怎样才能找回? 把微信好友删除了!我怎么找回他的微信!没有记住,也没有手机号 什么食物含大豆肽 倒那里可以学做包子的技术? 请问油豆角露地怎样进行种植? 怎样种好东北油豆角? 看病收费票据里的起付标准累计和大病统筹支付分别代表什么? 本年度统筹基金支付范围内医疗已累计金额1835.88是什么意思 医保卡上次现金支付累计是什么意思? 为什么改不了和昵称 农村信用社会计的主要工作业绩怎么写 农村信用社党员年终总结 如何查看她附近街景 求有关信用社工作的文章 自己编的秋天的古诗? 关于秋天的古诗自编三年级 请写一篇2008年度农村信用社人事经理述职报告 自己编的秋天的古诗 求几篇农村信用社的培训心得